MVC4 HTTP Error 403.14 - Terlarang

88

Saya telah membangun aplikasi web .net4.5 ASP.NET MVC4 yang berfungsi dengan baik secara lokal (IIS Express & dev server) tetapi begitu saya menyebarkannya ke server web saya, itu menimbulkan kesalahan 403. Saya telah menginstal .Net 4.5RC di server dan bahkan mencoba aspnet_regiis -i sedikit yang direkomendasikan semua orang untuk masalah mereka dengan versi MVC / .Net sebelumnya tetapi itu tidak membantu.

Ada ide?

EDIT : Info lebih lanjut tentang situasinya. Servernya 32bit dan saya punya 4 aplikasi MVC3 lain yang berfungsi dengan baik. Hanya aplikasi MVC4 saya yang tidak berfungsi.

mithun_daa
sumber
Saya mengalami masalah yang sama ini ketika saya membuat aplikasi baru asp.net 4.5 Web Forms . Ini bekerja dengan baik secara lokal (IIS 7.5), tetapi ketika digunakan untuk menguji server (juga IIS 7.5) maka hampir semua file javascript dan css yang dibundel & dikecilkan gagal dimuat dengan 404 Not Found. Jawaban di bawah tentang runAllManagedModulesForAllRequests memecahkan masalah untuk saya!
ClearCloud8
Saya mungkin telah menjawab pertanyaan ini di: stackoverflow.com/questions/24343788/…
fsbf
<system.webServer> <modules runAllManagedModulesForAllRequests = "true" /> </system.webServer>
John

Jawaban:

172

Mencoba

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

Melalui

/server/405395/unable-to-get-anything-except-403-from-a-net-4-5-website

MarkKGreenway
sumber
1
Memiliki itu di tempat, melakukan segalanya, dan masih hanya situs MVC 4 yang berfungsi. Harus ada beberapa trik lain yang perlu dilakukan agar ini bekerja.
Maxim V. Pavlov
1
Ini. Mencoba semua solusi saham lain tanpa kegembiraan tetapi ini adalah salah satu yang menyelesaikan masalah.
Julia Hayward
1
Dear friend, saya melakukannya, tetapi tidak berhasil. Sungguh, saya bekerja dengan MVC 4 dan VisualStudio 2012, proyek saya bekerja dengan baik sampai kemarin, tetapi setelah beberapa perubahan biasa dalam kode saya, kesalahan ini meningkat di halaman default (home / index). dapatkah setiap tubuh membantu saya? ..
A.Dara
4
Perbaikan ini tidak sesuai untuk masalah ini (lihat tautan di jawaban Jason Koopmans). jauh lebih baik mengunduh hotfix terkait di sini microsoft.com/en-us/download/…
Ahmad Ibrahim
@AhmadIbrahim sebenarnya adalah solusi untuk masalah tersebut. Perbaikannya hanya untuk 64bit, pertanyaannya dengan jelas menyatakan 32bit. Ada konfigurasi tertentu yang RAMMFAR merupakan solusi kerja yang paling andal, dan menambahkan beban server minimal jika CDN digunakan dengan tepat.
MarkKGreenway
22

Kesalahan 403.14 adalah kode kesalahan HTTP karena tidak diizinkan untuk mencantumkan konten direktori. Harap pastikan itu

  1. Anda telah menyiapkan situs web sebagai aplikasi di IIS
  2. Anda memiliki .NET 4.5 yang diinstal di server
  3. Anda telah menyetel kumpulan aplikasi untuk menjalankan versi yang tepat dari kerangka kerja .NET (misalnya, tidak disetel ke .NET 2.0
  4. Anda menggunakan pipeline terintegrasi di pool aplikasi Anda
  5. .NET 4.5 sebenarnya terdaftar di IIS. Silakan lihat posting ini untuk masalah / resolusi serupa

Biasanya, a dan d adalah masalah terbesar seputar penerapan MVC ke IIS

Tommy
sumber
1. Saya belum menyiapkan situs web sebagai aplikasi. 2. Saya telah menginstal .net 4.5, 3. memiliki kumpulan aplikasi saya yang menargetkan framework yang benar. 4. Kolam renang saya diatur untuk menggunakan klasik, mengubahnya menjadi Terintegrasi tetapi tidak membantu. 5. Saya cukup yakin 4.5 telah terdaftar.
mithun_daa
1
@mithun_daa - Jika Anda belum mengatur situs web Anda sebagai aplikasi, cukup mudah -> klik kanan direktori / situs web virtual dan Ubah Ke Aplikasi (atau tambahkan Aplikasi, terminologi luput dari saya saat ini)
Tommy
Apakah ini hal spesifik MVC4? Karena saya tidak pernah menyiapkan proyek MVC3 saya sebagai Aplikasi dan bekerja dengan baik.
mithun_daa
Bisa jadi bagaimana Anda menyebarkan kemudian -> tetapi aplikasi web .NET apa pun harus disetel sebagai aplikasi di IIS. Namun, jika Anda hanya meletakkan ini di bawah situs web default, maka itu berjalan di bawah aplikasi situs web default. Pastikan bahwa kumpulan aplikasi situs web default dikonfigurasi dengan benar (.NET 4 / terintegrasi). Saat Anda membuat direktori virtual / situs web virtual di IIS, Anda juga memiliki opsi untuk menyetelnya ke aplikasinya sendiri.
Tommy
Saya mungkin membuat Anda bingung tetapi tidak ada situs yang berada di bawah situs Web Default. Saya klik kanan "Situs" di IIS7 dan pilih "Tambah Situs Web". Itulah yang saya lakukan.
mithun_daa
11

Mungkin ... Jika Anda kebetulan menggunakan Wisaya Penerbitan (seperti yang saya lakukan) dan memilih kotak centang "Prakompilasi selama penerbitan" (seperti yang saya lakukan) dan melihat gejala yang sama ...

Ya, saya menyalahkan diri sendiri, tetapi setelah menghapus centang pada kotak ini, pengaturan yang tampaknya tidak terkait, semua gejala yang dijelaskan hilang setelah dipekerjakan kembali.

Semoga ini memperbaiki beberapa orang.

Brian Kirkpatrick
sumber
Jika Anda mengalami ini, kemungkinan akar penyebabnya adalah memiliki versi pustaka eksternal yang berbeda di lingkungan produksi. Saya memiliki aplikasi MVC saya yang dikompilasi terhadap versi yang lebih baru dari dll pihak ketiga dan versi yang lebih lama di server produksi ..
ValGe
Ini untuk anak laki-laki yang bertanya-tanya, anak itu, manusia ajaib, fenomena, yang tak terhentikan, raja, ini untuk Tuan dan nyonya @Brian Kirkpatrick
Luis Villarroel
10

Windows-> Mulai -> Mengaktifkan dan menonaktifkan fitur janda

Pastikan Anda memeriksa opsi yang diperlukan di

masukkan deskripsi gambar di sini

Kurkula
sumber
6

Sebelum melamar

runAllManagedModulesForAllRequests="true"/>

pertimbangkan tautan di bawah ini yang menyarankan alternatif yang tidak terlalu drastis. Dalam posting penulis menawarkan perubahan berikut ke web.config lokal:

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

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html

Jason Koopmans
sumber
Inilah jawaban sebenarnya. Terima kasih!
Spivonious
5

Ada Refactor -> Rename Bug di Visual Studio 2012 yang salah mengganti nama "id" di dalam nilai string literal dari parameter url di RouteConfig.cs saya. Hal ini menyebabkan 403.14 pada penyiapan baru dan sebaliknya benar di Windows Server 2012 dan Windows Server 2008 R2.

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

diubah menjadi

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{renamed_text}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
pengguna641770
sumber
Bagi saya, saya lama menemukan bahwa saya bisa masuk nulluntuk nameparameter untuk menghindari membuat up nama untuk setiap rute. Ternyata hal ini juga terkadang menyebabkan 403 (hanya di lingkungan prod kami, Win Server 2008 R2 menjalankan .NET 4.5.1, MVC 5 dalam proyek VS2013. Untuk menyelesaikannya, saya menambahkan nama untuk setiap rute.
tristankoffee
2

Anda juga bisa mendapatkan 403 jika saat menguji dengan server dev Anda menggunakan pipeline terintegrasi dan kemudian menginstal sebagai mode pipeline klasik di server web IIS 7.5 langsung Anda, juga saya kehilangan folder app_data saya yang juga diperlukan

marcusdev
sumber
2

Jika Anda menjalankan IIS 8.5 di Windows 8, atau Server 2012, Anda mungkin menemukan bahwa menjalankan mvc 4/5 (.net 4.5) tidak berfungsi di direktori virtual. Jika Anda membuat entri host lokal di file host untuk diarahkan kembali ke mesin lokal Anda dan kemudian mengarahkan situs web IIS lokal baru ke folder itu (dengan entri header host yang cocok), Anda akan menemukannya berfungsi kemudian.

Mastro
sumber
Mengapa memposting jawaban yang sama di banyak tempat?
devnull
8
Karena saya mencoba melacak solusinya, dan ini berkaitan dengan keduanya. Selamatkan seseorang agar tidak memburunya.
Mastro
Anda tidak boleh memposting jawaban duplikat. Hanya itu yang bisa saya katakan.
devnull
1
<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

Anda dapat menggunakan kode di atas

Jinto John
sumber
1

Saya telah menyetel pool aplikasi aplikasi baru ke DefaultAppPooldalam IIS yang jelas-jelas menggunakan Classicpipeline dengan.NET v.2.0 .

Untuk mengatasi masalah ini saya membuat App Pool baru menggunakan Integratedpipeline dan.NET v4.0 . hanya untuk aplikasi baru ini dan semuanya mulai bekerja seperti yang diharapkan.

Jangan lupa untuk menetapkan kumpulan aplikasi baru ini ke aplikasi. Pilih aplikasi di IIS, klik Basic Settingslalu pilih kumpulan aplikasi baru untuk aplikasi tersebut.

Leniel Maccaferri
sumber
0

yang saya lihat lebih sering baru-baru ini adalah IIS dan memungkinkan aplikasi 32-bit untuk dijalankan

Apakah ini yang telah Anda coba. jika tidak, kami memerlukan informasi lebih lanjut tentang produksi dan versi server dev

MarkKGreenway
sumber
Saya minta maaf tetapi saya tidak mengikuti apa yang Anda maksud. Ini adalah server 32bit. Saya telah memperbarui posting saya untuk menambahkan lebih banyak info.
mithun_daa
Ahhh ... Apakah mereka berada di app_pools terpisah?
MarkKGreenway
Ya, sebenarnya setiap situs saya memiliki kumpulan aplikasinya sendiri.
mithun_daa
0

Saya memiliki masalah yang sedikit berbeda, di server 2012 entah bagaimana saya lupa mengaktifkan asp.net 4.5 jadi jika Anda mengalami masalah ini, periksa kembali apakah Anda mengaktifkannya.

Volodymyr Bilyachat
sumber
0

Saya menjalankan Windows Server 2012 R2 di Azure dan ASP.NET 4.5, IIS 8

Saya memecahkan masalah ini dengan menghapus semua item ASP.NET di Program dan Fitur, lalu menginstal ulang ASP.NET seperti ini dengan Server Manager menggunakan Add Roles and Features: memilih instalasi Role-Based atau Feature-Based, memilih server saya, dan kemudian untuk Pilih Peran Server memilih Server Web (IIS) / Server Web / Pengembangan Aplikasi, kemudian mengklik ASP.NET 4.5, mengonfirmasi penginstalan prasyarat, dan kemudian menginstal ulang ASP.NET 4.5.

Pencarian saya sebelumnya telah membuat saya percaya bahwa masalahnya sebenarnya berasal dari masalah pendaftaran dengan ASP.NET. Dengan versi ASP.NET sebelumnya, sebenarnya ada utilitas yang dapat Anda jalankan untuk mendaftarkan ASP.NET tanpa menginstal ulang, tetapi tampaknya tidak tersedia lagi.

fsbf
sumber
0

Saya memecahkan masalah membuka studio visual, memperluas referensi dan mengubah properti "Salin Lokal" menjadi "Benar".

Saya menemukan ini membandingkan dll dari versi lama dengan DLL versi baru saya (yang tidak berfungsi)

Wagner
sumber
0

Dalam kasus saya, halaman default aplikasi saya adalah index.html yang hilang dari opsi dokumen default. Menambahkannya memperbaiki kesalahan Terlarang 403.14.

Erik K.
sumber
0

Dalam kasus saya, masalah ini disebabkan oleh ActionFilterAttribute kustom yang merupakan semacam atribut filter global. Atribut membuat instance layanan melalui Autofac tetapi layanan mengalami error di konstruktor:

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}
Artem Vertiy
sumber
0

Dalam kasus saya, Fitur Windows juga aspnet_regiis -itidak berfungsi. Setelah berjam-jam menggali di Internet, saya membuat solusi sendiri:

  1. Di manajer IIS di modul saya mengubah mewarisi lokal di simpul UrlRoutingModule-4.0:

    masukkan deskripsi gambar di sini

  2. Di web.config saya menempelkan campuran beberapa tip dari forum ini:

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

Semoga membantu

Sylwia M
sumber