MVC4 HTTP Hatası 403.14 - Yasak


89

Yerel olarak iyi çalışan (IIS Express & dev sunucusu) bir .net4.5 ASP.NET MVC4 web uygulaması oluşturdum, ancak bunu web sunucuma yerleştirdiğimde 403 hatası veriyor. Sunucuya .Net 4.5RC'yi kurdum ve hatta aspnet_regiis -i herkesin MVC / .Net'in önceki sürümleriyle ilgili sorunları için önerdiği biti denedim, ancak yardımcı olmadı.

Herhangi bir fikir?

DÜZENLEME : Durum hakkında daha fazla bilgi. Sunucu 32bit ve iyi çalışan 4 başka MVC3 uygulamam var. Çalışmayan sadece MVC4 uygulamam.


Yeni bir asp.net 4.5 Web Forms uygulaması oluşturduğumda aynı sorunla karşılaştım . Yerel olarak iyi çalıştı (IIS 7.5), ancak sunucuyu test etmek için (ayrıca IIS 7.5) dağıtıldığında, paketlenmiş ve küçültülmüş javascript ve css dosyalarımın çoğu 404 Not Found ile yüklenemiyordu. RunAllManagedModulesForAllRequests ile ilgili aşağıdaki yanıt benim için sorunu çözdü!
ClearCloud8

Bu soruyu şu adreste yanıtlamış olabilirim: stackoverflow.com/questions/24343788/…
fsbf

<system.webServer> <modüller runAllManagedModulesForAllRequests = "true" /> </system.webServer>
Jinto John

Yanıtlar:


172

Deneyin

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

Üzerinden

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


1
Yerinde olsaydı, her şeyi yaptı ve hala yalnızca MVC 4 siteleri çalışıyor. Bunun işe yaraması için yerinde olması gereken başka bir numara olmalı.
Maxim V. Pavlov

1
Bu. Diğer tüm stok çözümleri neşe olmadan denedim ama sorunu çözen buydu.
Julia Hayward

1
Sevgili arkadaşım, yapıyorum ama işe yaramıyor. Gerçekten, MVC 4 ve VisualStudio 2012 ile çalışıyordum, projem düne kadar iyi çalışıyor, ancak kodlarımdaki bazı olağan değişikliklerden sonra, bu hata varsayılan sayfada (ana sayfa / dizin) yükseliyor. herhangi bir vücut bana yardım edebilir mi lütfen? ..
A.Dara

4
Bu düzeltme, bu sorun için uygun değildir (Jason Koopmans yanıtındaki bağlantıya bakın). çok daha iyisi ilgili düzeltmeyi buradan indirmektir microsoft.com/en-us/download/…
Ahmad Ibrahim

@Ahmadİbrahim aslında soruna bir çözüm. Düzeltme yalnızca 64bit içindir, soru açıkça 32bit belirtir. RAMMFAR'ın en güvenilir çalışma çözümü olduğu belirli yapılandırmalar vardır ve CDN'ler uygun şekilde kullanılırsa minimum sunucu yükü ekler.
MarkKGreenway

22

Hata 403.14, bir dizinin içeriğini listelemesine izin verilmemesi nedeniyle HTTP hata kodudur. Lütfen emin ol

  1. Web sitesini IIS'de bir uygulama olarak kurdunuz
  2. Sunucuda .NET 4.5 yüklüdür
  3. Uygulama havuzunu, .NET çerçevesinin doğru sürümünü çalıştıracak şekilde ayarladınız (yani, .NET 2.0 olarak ayarlanmamış
  4. Uygulama havuzunuzdaki entegre ardışık düzeni kullanıyorsunuz
  5. .NET 4.5 aslında IIS'de kayıtlıdır. Lütfen benzer bir sorun / çözüm için bu gönderiye bakın

Genellikle, a ve d, IIS'ye MVC dağıtımlarını çevreleyen en büyük sorunlardır


1. Web sitesini bir uygulama olarak kurmadım. 2. .net 4.5 yükledim, 3. uygulama havuzumun doğru çerçeveyi hedeflemesi vardı. 4. Havuzum klasik kullanacak şekilde ayarlandı, Entegre olarak değiştirildi ancak yardımcı olmadı. 5. 4.5'in kayıtlı olduğundan oldukça eminim.
mithun_daa

1
@mithun_daa - Web sitenizi bir uygulama olarak kurmadıysanız, oldukça kolaydır -> sanal dizini / web sitesini sağ tıklayın ve Uygulamaya Dönüştür (veya Uygulama ekleyin, terminoloji şu anda benden kaçıyor)
Tommy

Bu, MVC4'e özgü bir şey mi? Çünkü MVC3 projelerimi hiçbir zaman Uygulamalar olarak kurmadım ve gayet iyi çalışıyorlar.
mithun_daa

O zaman nasıl konuşlandırdığınız olabilir -> ancak herhangi bir .NET web uygulaması IIS'de bir uygulama olarak ayarlanmalıdır. Ancak, bunları yalnızca varsayılan web sitesinin altına koyuyorsanız, varsayılan web sitesi uygulaması altında çalışıyor demektir. Varsayılan web sitesinin uygulama havuzunun doğru yapılandırıldığından emin olun (.NET 4 / tümleşik). IIS'de bir sanal dizin / sanal web sitesi oluşturduğunuzda, bunu kendi uygulamasına da ayarlama seçeneğiniz vardır.
Tommy

Muhtemelen kafanı karıştırdım ama sitelerin hiçbiri Varsayılan Web sitesi altında değil. IIS7'de "Siteler" e sağ tıklayıp "Web Sitesi Ekle" yi seçiyorum. Ben böyle yapıyorum.
mithun_daa

11

Belki ... Yayınlama Sihirbazını kullanırsanız (benim yaptığım gibi) ve "Yayınlama sırasında ön derleme" onay kutusunu seçerseniz (benim yaptığım gibi) ve aynı belirtileri görürseniz ...

Evet, kafama vurdum ama bu kutunun işaretini kaldırdıktan sonra, görünüşte alakasız bir ortam, anlatılan tüm semptomlar yeniden dağıtımdan sonra kayboluyor.

Umarım bu bazı insanları düzeltir.


Buna sahipseniz olası bir temel neden, üretim ortamında harici bir kitaplığın farklı bir sürümüne sahip olmanızdır. Mvc uygulamamı bir 3. taraf
dll'nin

Merak eden çocuk, çocuk, mucize adam, fenomen, durdurulamaz, kral, işte @ Brian Kirkpatrick bayanlar ve beyefendiler
Luis Villarroel

10

Windows-> Başlat -> Widget özelliklerini açın ve kapatın

İçinde gerekli seçenekleri kontrol ettiğinizden emin olun.

görüntü açıklamasını buraya girin


6

Uygulamadan önce

runAllManagedModulesForAllRequests="true"/>

Daha az sert bir alternatif öneren aşağıdaki bağlantıyı düşünün. Gönderide yazar, yerel web.config dosyasında aşağıdaki değişikliği sunar:

  <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


Bu gerçek cevap. Teşekkürler!
Spivonious

5

Visual Studio 2012'de, RouteConfig.cs dosyamdaki url parametresinin değişmez dize değeri içindeki "id" değerini yanlışlıkla yeniden adlandıran bir Refactor -> Rename Hatası var . Bu, hem Windows Server 2012 hem de Windows Server 2008 R2'de yeni ve başka türlü doğru bir kurulumda 403.14'e neden oldu.

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

olarak değiştirildi

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

Benim nulliçin, nameher rotaya bir ad vermekten kaçınmak için parametreye girebileceğimi uzun zaman önce keşfettim . Bunun bazen 403'e neden olduğu ortaya çıktı (yalnızca üretim ortamımızda, bir VS2013 projesinde .NET 4.5.1 çalıştıran Win Server 2008 R2, MVC 5. Çözmek için her rota için bir ad ekledim.
tristankoffee

2

Dev sunucusuyla test ederken, entegre ardışık düzen kullanıyorsanız ve ardından canlı IIS 7.5 web sunucunuza klasik ardışık düzen modu olarak yüklüyorsanız, ayrıca benim de gerekli olan app_data klasörümün eksik olması durumunda bir 403 alabilirsiniz.


2

Windows 8 veya Server 2012'de IIS 8.5 çalıştırıyorsanız, mvc 4/5 (.net 4.5) çalıştırmanın sanal bir dizinde çalışmadığını görebilirsiniz. Ana bilgisayar dosyasında yerel makinenize geri dönmek için yerel bir ana bilgisayar girişi oluşturur ve ardından yeni bir yerel IIS web sitesini bu klasöre yönlendirirseniz (eşleşen ana bilgisayar başlığı girişiyle birlikte) o zaman çalıştığını göreceksiniz.


Neden aynı cevabı birden fazla yere gönderelim?
devnull

8
Çünkü çözümü bulmaya çalışıyordum ve bu ikisiyle de ilgili. Birini etrafta avlamaktan kurtarın.
Mastro'nun

Yinelenen cevaplar göndermemelisiniz. Tüm söyleyebileceğim bu.
devnull

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

Yukarıdaki kodu kullanabilirsiniz


1

Yeni uygulamanın uygulama havuzunu, DefaultAppPoolaçık bir şekilde Classicpipeline'ı kullanan IIS'ye ayarladım .NET v.2.0.

Sorunu çözmek için Integratedardışık düzen ve .NET v4.0. sadece bu yeni uygulama için ve sonra her şey beklendiği gibi çalışmaya başladı.

Bu yeni uygulama havuzunu uygulamaya atamayı unutmayın. IIS'de uygulamayı seçin, öğesine tıklayın Basic Settingsve ardından uygulama için yeni uygulama havuzunu seçin.


0

Son zamanlarda daha sık gördüğüm IIS ve 32bit uygulamaların çalışmasına izin veriyor

Denediğin bu mu? aksi halde üretim ve geliştirme sunucusu sürümleri hakkında daha fazla bilgiye ihtiyacımız var


Üzgünüm ama ne demek istediğini anlamadım. Bu 32bit bir sunucudur. Daha fazla bilgi eklemek için gönderimi güncelledim.
mithun_daa

Ahhh ... Ayrı uygulama havuzlarında mı?
MarkKGreenway

Evet, sitelerimden her birinin kendi uygulama havuzları olmasına rağmen.
mithun_daa

0

Biraz farklı bir sorunum var, sunucu 2012'de bir şekilde asp.net 4.5'i etkinleştirmeyi unuttum, bu nedenle bu sorunu yaşıyorsanız, etkinleştirdiğinizi iki kez kontrol edin.


0

Azure ve ASP.NET 4.5, IIS 8 üzerinde Windows Server 2012 R2 çalıştırıyorum

Bu sorunu Programlar ve Özellikler'deki tüm ASP.NET öğelerini kaldırarak ve ardından Rol ve Özellik Ekle'yi kullanarak Sunucu Yöneticisi ile ASP.NET'i şu şekilde yeniden yükleyerek çözdüm: Rol Tabanlı veya Özellik Tabanlı yüklemeyi seçtim, sunucumu seçtim ve sonra Sunucu Rolü Seçimi için Web Sunucusu (IIS) / Web Sunucusu / Uygulama Geliştirme seçildi, ardından ASP.NET 4.5 tıklandı, ön koşulun yüklenmesi onaylandı ve ardından ASP.NET 4.5 yeniden yüklendi.

Önceki aramalarım, sorunun aslında ASP.NET'teki bir kayıt sorunundan kaynaklandığına inanmamı sağladı. ASP.NET'in önceki sürümlerinde, ASP.NET'i yeniden yüklemeden kaydettirmek için çalıştırabileceğiniz bir yardımcı program var, ancak bu artık kullanılamıyor gibi görünüyor.


0

Görsel stüdyoyu açma, referansları genişletme ve "Yerel Kopyala" özelliğini "Doğru" olarak değiştirme sorununu çözüyorum.

Bunu eski sürümün dll'leri ile yeni sürümümün Dll'lerini karşılaştırırken keşfettim (çalışmıyordu)


0

Benim durumumda, uygulamamın varsayılan sayfası, varsayılan belge seçeneklerinde eksik olan index.html idi. Eklendiğinde 403.14 Yasak hatası düzeltildi.


0

Benim durumumda, soruna bir tür genel filtre özelliği olan özel ActionFilterAttribute neden oldu. Öznitelik, Autofac aracılığıyla bir hizmeti başlattı, ancak hizmet yapıcıda kilitlendi:

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

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

0

Benim durumumda ne Windows Özellikleri ne de aspnet_regiis -iişi yapmadı. İnternette saatlerce araştırma yaptıktan sonra kendi çözümümü yaptım:

  1. Modüllerdeki IIS Yöneticisi'nde, UrlRoutingModule-4.0 düğümünde devralmayı yerel olarak değiştirdim:

    görüntü açıklamasını buraya girin

  2. Web.config dosyasına bu forumdaki bazı ipuçlarının bir karışımını yapıştırdım:

    <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>
    

Umarım yardımcı olur

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.