ASP MVC di IIS 7 menghasilkan: Kesalahan HTTP 403.14 - Terlarang


146

Saya sedang mengembangkan proyek web ASP MVC. Sekarang saya memiliki persyaratan yang memaksa saya untuk menggunakan IIS7 pengembangan (untuk memeriksa beberapa fitur). Saya mendapatkan pesan kesalahan yang disebutkan di atas setiap kali saya mencoba mengetik URL situs web. (Catatan: mesin pengembangan: Vista Home Premium, IIS7)

Apa yang telah saya lakukan sampai sekarang:

Mengedit file HOSTS (C: \ WINDOWS \ system32 \ drivers \ etc \ hosts).

Masukkan dua domain di dalamnya (127.0.0.1 domain1.com & 127.0.0.1 domain2.com).

Membuat folder c: \ situs web \ dirOfApplication dan digunakan dari dalam Visual Studio 8 ke folder ini.

Di IIS7 dibuat situs baru dengan nama host domain1.com dan folder aplikasi di atas.

Mengetik alamat domain1.com di browser Web menghasilkan kesalahan di atas (Kesalahan HTTP 403.14 - Forbidden - Server Web dikonfigurasi untuk tidak mencantumkan konten direktori ini.)

Saya pikir saya kehilangan sesuatu tetapi tidak tahu apa! Mencoba menyebarkan file System.Web.Mvc, System.Web.Abstraction & System.Web.Routing dengan hasil yang sama. Setiap kali saya mencoba menekan F5 dan menjalankan aplikasi, itu berfungsi dengan baik!


kemungkinan duplikat ASP.NET MVC pada IIS 7.5
Fenton

Jawaban:


224

Mungkin ini berguna bagi seseorang: Setelah mengonversi aplikasi saya ke MVC 4 dengan .NET framework 4.5 dan menginstal framework pada server saya dengan IIS 7.0, saya menemukan kesalahan 'terlarang' yang sama yang disebutkan dalam pertanyaan. Saya mencoba semua opsi yang dijelaskan di atas tidak berhasil, ketika saya perhatikan

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

hilang dari web.config saya. Setelah menambahkan ini, semuanya berfungsi. Sederhana, tetapi mudah untuk diabaikan ...

EDIT:

Tentu saja solusi di atas akan berhasil, tetapi ini memang pemborosan sumber daya. Saya pikir lebih baik menambahkan modul routing seperti yang ditunjukkan oleh Chris Herring di komentar.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

2
Ternyata ketika saya menghapus paket NuGet, itu dihapus runAllManagedModulesForAllRequests="true"dari Web.config saya. Terima kasih telah menyebutkan ini sebelum saya menghabiskan sepanjang malam mencoba mencari tahu ini.
Schmalls

3
INI!! Arrrrgh Saya menghabiskan / membuang sepanjang hari mencoba untuk mendapatkan ini bekerja sampai saya menemukan jawaban Anda, terima kasih! Apa yang aneh adalah bahwa itu akan berjalan pada IIS pada mesin lokal saya baik-baik saja, tetapi tidak pada kotak produksi dan mereka berdua menjalankan IIS7.5
Glenn Slaven

1
Itu dia. Uninstall Cassette Nuget kadang-kadang menghapusnya. Terima kasih.
Zachary Scott

8
coba hindari menggunakan pengaturan ini dengan menambahkan modul perutean - britishdeveloper.co.uk/2010/06/...
Chris Herring

6
Saya suka jawaban komentar "Mungkin ini berguna bagi seseorang" ... lol ... Sepertinya ini berguna bagi banyak orang, termasuk saya.
Paul

126

Dijawab pada SO di sini , pertanyaan: 403 - Dilarang menggunakan dasar MVC 3 di iis7.5

Lari aspnet_regiis -i. Seringkali saya menemukan Anda perlu melakukan itu untuk membuat aplikasi 4.0 bekerja. Buka prompt perintah sebagai Administrator(klik kanan ikon command prompt dan pilih Run as Administrator):

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

Setelah diinstal dan terdaftar, pastikan aplikasi Anda menggunakan kumpulan aplikasi yang diatur ke .NET 4.0.

UPDATE: Saya baru saja menemukan masalah dengan perintah ini. Menggunakan -i memperbarui semua kumpulan aplikasi ke ASP.NET 4.0.

Menggunakan aspnet_regiis -irmenginstal versi ASP.NET tetapi tidak mengubah aplikasi web apa pun ke versi ini. Anda mungkin juga ingin meninjau opsi -iru.


Bekerja untuk saya juga. Setelah menjalankan aspnet_regiis -i perintah UrlMappingModule dipasang di IIS.
Manish Gupta

Setelah menginstal IIS, saya perlu menjalankan aspnet_regiis untuk membuat semuanya berfungsi meskipun .NET 4 tampaknya sudah terdaftar.
Brian

Jika kerangka kerja diinstal sebelum IIS, maka ya Anda perlu aspnet_regiis.
Brettski

2
Jangan lupa bahwa untuk sistem 64 bit itu "Framework64". Yaitu, Windows \ Microsoft.NET \ Framework64 \ v4.xxx.xxx
grahamesd

Untuk penggunaan ini, aspnet_regiis versi 64 atau 32 bit tidak masalah. Beberapa kasus khusus tercantum di sini: msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski

34

Saya juga mengalami kesalahan ini. Semua konfigurasi dan izin sudah benar. Tapi saya lupa menyalin Global.asax ke server, dan itulah yang menyebabkan kesalahan 403.


Dalam kasus saya, saya telah memindahkannya secara tidak sengaja dengan mouse tanpa memperhatikan. Terima kasih!
Mathias Lykkegaard Lorenzen

Hanya buang waktu 2 jam karena saya lupa menyalin file ini, setelah menghapus folder dokumen web saya!
Steven Sproat

10

Itu karena terlalu yakin tentang apa yang Anda (saya) lakukan!

Pada mesin saya ada IIS 7 diinstal tetapi komponen ASP.NET yang diperlukan (Control Panel-> Programs-> Turn On / Off-> ASP.NET) tidak.

Jadi menginstal ini menyelesaikan masalah


9

Saya memiliki masalah yang sama. Artikel dukungan Microsoft ini memperbaikinya untuk saya.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http- 404-kesalahan-ketika-mereka-mencoba-proses-ekstensi-url-on-iis-7-dan-iis-7.5

Dalam kotak dialog "Aktifkan atau Nonaktifkan Fitur Windows" dari Program dan Fitur "Panel Kontrol Windows", lakukan langkah-langkah berikut:

  1. Arahkan ke simpul berikut: Layanan Informasi Internet -> Layanan World Wide Web -> Fitur HTTP Umum
  2. Pastikan bahwa opsi "Pengalihan Kesalahan HTTP" dipilih.

-atau-

  1. Arahkan ke simpul berikut: Layanan Informasi Internet -> Layanan World Wide Web -> Fitur Kinerja
  2. Pastikan bahwa opsi "Kompresi Konten Statis" dipilih. Setelah salah satu opsi dipilih, klik "OK" untuk menyimpan perubahan.

Mengaktifkan kembali modul Pengalihan Kesalahan HTTP atau modul Kompresi Konten Statis memastikan bahwa ASP.NET dan IIS menyinkronkan peristiwa pipa HTTP dengan benar. Ini memungkinkan modul perutean URL untuk memproses URL tanpa ekstensi.


7

Coba terapkan pengaturan berikut yang ditunjukkan di bawah ini:

1) Berikan izin yang diperlukan kepada IIS_IUSRSpengguna pada IIS Server(Klik kanan pada situs web lalu Edit Izin> Keamanan).

masukkan deskripsi gambar di sini

2) Jika Anda menggunakan .NET Framework 4, pastikan bahwa versi .NET Framework ada v4.0di Application Poolsitus web Anda.

masukkan deskripsi gambar di sini

3) Buka Commanp Prompt as administratordan jalankan iisresetperintah untuk memulai kembali IIS Server.

Semoga ini membantu...


Tip: Jika Anda masih mendapatkan kesalahan izin setelah ini maka Anda mungkin perlu melakukan iisreset di cmd sebagai Admin setelah melakukan ini untuk menjalankan situs Anda di IIS.
Cory Koch

6

Dalam kasus saya, pendekatan berikut membantu saya:

  1. aspnet_regiis -i di Windows\Microsoft.Net\Framework

  2. Menambahkan modul ke system.webServer

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>

Saya kira Anda menghilangkan kerangka itu. Tapi buka cmd sebagai admin, dan jalankan aspnet_regiis -i di Windows \ Microsoft.Net \ Framework \ v4.0.30319
DeadlyChambers

5

Harap periksa juga, jika Anda menjalankan x64, bahwa Anda telah mengaktifkan aplikasi 32-bit di pengaturan kumpulan aplikasi

masukkan deskripsi gambar di sini


3

Pada Hapus centang "Precompile During Publishing" - Saya mendapatkan kesalahan 403.14 pada layanan web yang baru saja saya tulis di VS2015 jadi saya menulis ulang di VS2013 dan mendapatkan kesalahan yang sama. Dalam kedua kasus saya memiliki "Precompile During Publishing" pada. Saya tidak mencentangnya tetapi masih mendapatkan kesalahan. Dalam kasus saya, saya juga memiliki " Hapus semua file yang ada sebelum dipublikasikan " tetapi tidak menghapus semuanya dari direktori target di server sebelum menyalin file yang baru diterbitkan di sana. Jika Anda tidak melakukan itu - file " PrecompiledApp.config " tertinggal yang menyebabkan masalah. Setelah saya menghapus file itu, saya menjadi pengguna layanan web versi VS2013 dan VS2015.


2

Saya mencoba semuanya di sini; tidak ada yang berhasil. Masalahnya ada di Web.configfile saya , entah bagaimana penjilidan perakitan bergantung berubah dari minimum 1ke minimum 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />

1

Harap perhatikan bahwa terkadang salah Managed pipeline modeakan menyebabkan kesalahan ini. Ada dua pilihan untuk dipilih integrateddan classic.


1

Cara Memperbaiki "Kesalahan HTTP 403.14 - Terlarang Server Web dikonfigurasi untuk tidak mencantumkan konten direktori ini"

Kesalahan ini terjadi ketika Anda menjalankan host MVC 2+ di IIS 7+, ini karena ASP.NET 4 tidak terdaftar di IIS. Dalam kasus saya, saya membuat proyek MVC 3 dan hosting di IIS 7.5.

Untuk memperbaikinya, pastikan Anda memiliki MVC 2 atau lebih tinggi dan .Net Framework 4.0 diinstal, kemudian jalankan prompt perintah sebagai administrator dan ketik baris berikut:

32bit (x86)

% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -ir

64bit (x64)

% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir


1

Periksa file Global.asax Anda . Dalam kasus saya, itu kosong.


1

Jika jawaban teratas tidak berfungsi, cari konfigurasi bernama PrecompiledApp.configdi direktori hosting dan hapus jika ada. File ini mencegah IISExpress dan LocalIIS untuk berfungsi dengan baik. (Dan saya pikir itu bug) Konten file dalam kasus saya adalah:

<precompiledApp version="2" updatable="true"/>

Dan saya 100% positif itu adalah masalah dengan kasus saya karena saya mencoba semuanya dalam 2 jam dan diuji berkali-kali dengan konfigurasi ini.

Satu hal lagi: Anda tidak dapat menggunakan aspnet_regiisWindows versi yang lebih baru dan IIS jadi cobalah

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

1

Control Panel> menyalakan atau mematikan fitur windows> Web Server> Pengembangan Aplikasi

Periksa ASP.NET


0

Saya juga mengalami kesalahan yang sama, meskipun semua solusi yang disediakan untuk alasan berikut:

  • DLL hilang
  • String koneksi database menunjuk ke server yang tidak dapat diakses.

0

Dalam kasus saya web.config dan semua file kecuali folder / bin hilang (entah bagaimana tidak disalin).
Konyol, tapi itu hal terakhir yang aku periksa.


0

Saya baru-baru ini mengalami kesalahan ini dan menemukan bahwa masalah itu disebabkan oleh fitur "HTTP Redirection" tidak diaktifkan di Windows Server saya. Posting blog ini membantu saya menyelesaikan pemecahan masalah untuk menemukan jawabannya (meskipun versi Windows Server yang lebih lama): http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable -tidak bekerja dengan-iis.aspx untuk server yang lebih baru buka Manajemen komputer, kemudian gulir ke bawah ke peran Server Web dan klikadd role services


0

Dengan proyek ASP.NET dengan C # 4.5 Saya telah memecahkan masalah tersebut dengan menginstal ekstensi ASP.NET di Web Platform Installer


0

Juga satu hal lagi dapat dimungkinkan

instal .net framework 4.0 secara manual

Solusi ini untuk IIS7 di jendela 7

buka cmd dengan ketentuan administrasi

buka direktori "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319"

ketik aspnet_regiis.exe -i

sampai ke manajer inet Anda dengan mengetikkan perintah run "inetmgr"

segarkan IIS7 Anda

memuat ulang situs.


0

Saya tahu Anda memiliki masalah ini di host internal, tetapi saya pernah mengalami masalah seperti sebelumnya di host eksternal dan dalam kasus saya itu memiliki resolusi sendiri, mungkin bisa menghemat waktu seseorang:

Sebenarnya situs web saya DIHENTIKAN oleh beberapa alasan yang saat ini tidak saya sadari, untuk memeriksanya jika Anda memiliki masalah yang sama, di halaman utama WebsitePanel buka Web -> Situs web lalu pilih nama domain situs web Anda dari daftar , setelah itu di sisi kanan halaman baru saja dibuka, periksa apakah Anda melihat kata DIMULAI, jika Anda melihat kata STOPPED, mulailah lagi. Itu saja.


0

Saya tahu ini adalah topik lama, tetapi Anda juga bisa mendapatkan kesalahan ini (saat Anda sedang debug) jika Anda memiliki folder dengan nama yang sama dengan rute di controller.

Misalnya, jika Anda memiliki UserController, dengan rute yang disebut / Pengguna dan Anda JUGA memiliki folder dalam solusi Anda yang disebut "Pengguna" maka IISExpress akan mencoba menelusuri folder alih-alih menunjukkan tampilan Anda.


0

Setelah mencoba setiap solusi yang disarankan di sini, saya menemukan solusi lain yang mungkin: URLScan

IIS telah menonaktifkan WebDAV, bahkan di web.config aplikasi saya, handler dan modul WebDAV telah dihapus. PUT masih mengembalikan 403 - Dilarang tanpa ada entri log di log IIS. (GET / POST bekerja dengan baik).

Ternyata IIS mengaktifkan Filter ISAPI (URLScan) aktif yang mencegah semua PUT. Setelah menghapus URLScan, itu berhasil untuk saya.


0

Situasi saya benar-benar berbeda dari semua ini dan 403: Pesan kesalahan terlarang adalah sedikit ikan haring merah.

Jika fungsi Application_Start () Anda di modul Global.asax mencoba mengakses web.config dan entri yang merujuk itu tidak ada di sana, IIS tersedak dan (karena alasan tertentu) melempar pesan kesalahan 403: Forbidden.

Periksa kembali apakah Anda tidak melewatkan entri di file web.config yang berusaha diakses di modul Global.asax Anda.


0

Jika Anda seperti saya dan memiliki aplikasi menggunakan NHibernate dan jawaban di atas belum menyelesaikan masalah Anda.

Anda harus melihat string koneksi di aplikasi Anda; mungkin di file konfigurasi web untuk memastikan itu benar.


-1

Saya telah menggunakan Identity Imersonate:

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

Saat mendorong ke server Anda harus memberikan akses nama pengguna ke Temporary ASP.NETfolder Files sehingga dapat membaca / menulis / menjalankan dengan benar:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

Ganti "frameworkversion" dan "aspversion" dengan versi yang Anda gunakan.


-1

Langkah 1: Pilih Situs yang menghasilkan Galat HTTP di IIS dan kemudian klik Penjelajahan Direktori seperti yang ditunjukkan pada gambar di bawah ini:

Langkah 2: Di Jendela Penjelajahan Direktori di IIS klik Aktifkan dalam Tindakan di sisi kanan seperti yang ditunjukkan pada diagram di bawah ini:

Sekarang Penjelajahan Direktori diaktifkan untuk situs web asp.net Anda, cukup restart aplikasi web di IIS dan Jelajahi situs di browser Anda dan lihat hasilnya.


-1

Saya menggunakan: Win Server 2012 R2 / IIS 8.5 / MVC4 / .Net 4.5

Jika tidak ada yang di atas berhasil maka coba ini:

Hapus centang "Precompile during Publishing"

Ini menendang pantat saya selama beberapa hari.


@ d-kermott, mungkin saya [menemukan] [( stackoverflow.com/a/31319136/912481 ) juga akan berguna bagi Anda?
Kamil Gareev

-1

Saya punya masalah ini tetapi itu diperbaiki dengan mudah dengan pergi ke Manajer Layanan Informasi Internet (IIS), mengklik dua kali Penjelajahan Direktori dan mengklik Aktifkan.

Dalam kasus saya, saya dapat mengakses file secara langsung tetapi tidak dapat mengakses folder.


-1

Saya salah mengetik alamat IP dengan satu digit, yang berarti alamat salah satu server saya yang lain. Sangat membingungkan saat Anda mendapatkan halaman .NET error tetapi dari mesin yang salah!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.