CustomErrors modu = “Kapalı”


254

Web uygulamamı sağlayıcıya her yüklediğimde bir hata alıyorum. CustomErrors modu nedeniyle gördüğüm tek şey varsayılan "Çalışma Zamanı hatası" mesajıdır ve hata hakkında daha fazla bilgi edinmek için customErrors özelliğini kapatmamı bildirir.

Bıkkın, web.config dosyamı şöyle görünecek şekilde ayarladım:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Ve yine de, elde ettiğim tek şey, üzerinde yararlı bilgi bulunmayan aptal uzak hatalar sayfası. CustomErrors özelliğini kapatmak için başka ne yapabilirim?!


1
Eklenti denemek @Model.Exception.MessageiçinShared/Error.cshtml
Muflix

Genel olarak, yapılandırma dönüşümlerine dikkat edin (örneğin, bu değeri değiştirebilecek Web.Debug.config) ve dosyadaki o bölümün / özelliğin yinelenen tanımlarına dikkat edin (bu durumda açıkça sorun değildi)
Graham

Yanıtlar:


165

Bu beni son birkaç gündür deli ediyor ve etrafta dolaşamadım ama sonunda anladım:

Benim machine.config dosyasında altında bir giriş vardı <system.web>:

<deployment retail="true" />

Bu, bir web.config dosyasında belirttiğiniz diğer customError ayarlarını geçersiz kılar ve yukarıdaki girişi şu şekilde ayarlar:

<deployment retail="false" />

şimdi ihtiyacım olan ayrıntılı hata mesajlarını bir kez daha görebileceğim anlamına geliyor.

Bulunduğu machine.configyer

32 bit

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64 bit

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

Umarım orada birine yardımcı olur ve birkaç saat saç çeker.


İyi bir nokta. Ancak, işiniz bittiğinde perakende modunu tekrar doğruya döndürmek (veya geliştirme makinenizde can sıkıcı olacak web.config dosyasında hata ayıklama modunu kapatmak). Bkz. Weblogs.asp.net/lasse/archive/2009/04/28/…
Stephen Kennedy

Bu .NET 4.0 varsayılan bir ayar gibi görünüyor - anlamaya aynı sorun vardı. Bir üretim ortamında kullanmak için iyi bir ayar olduğunu kabul edin, ancak hata ayıklama sırasında GERÇEK hatayı görmek çok önemlidir.
Jeremy

sadece zamanımı kurtarmakla kalmadı, hayatımı da kurtardı. Benim için tam olarak bu oldu
Pouya Samie

142

"Kapalı" büyük / küçük harfe duyarlıdır.

"O" nun web.config dosyanızda büyük harf olup olmadığını kontrol edin, birkaç kez acı çektim (göründüğü kadar basit)


49

Bu soruya daha fazla durum eklemek için (tam olarak aynı sorunu yaşadığım için baktığım yer burası), işte cevabım:

Benim durumumda, neyin yanlış olduğunu görmek istiyorsanız, geçerli hatayı söyleyen metni kesip yapıştırdım

<system.web>
   <customErrors mode="Off"/>
</system.web>

Bu yüzden bunu düzeltmeliydim, ama elbette değil! Benim sorunum bir <system.web> düğümü birkaç satır yukarıda (bir derleme ve kimlik doğrulama düğümünden önce) ve bir kapatma etiketi </system.web> birkaç satır altında oldu. Bunu düzelttiğimde, sorun çözüldü. Ne yapmalıydım sadece bu satırı kopyalamak / yapıştırmak:

<customErrors mode="Off"/>

Bu, "Kopyala ve İmha Yolunu Yapıştır" başlıklı bölümde Yaptığım Aptal Şeylerin Yıllarca Tekrarlanan Yıllarından.


Soru: Bu yanıt ASP'nin web.config dosyasını ve diğer yapılandırma dosyalarını üstten okuduğunu, yani: yukarıdan aşağıya okuduğunu gösterir. Yapılandırma dosyalarının "tek örnek" olarak okunduğunu, derleyicinin yapılandırma dosyasını ilk önce doğruluk için ayrıştırıp sonra derlediğini düşündüm, ancak satır satır derleme yapıyor gibi görünüyor. Bu doğru mu?
Fandango68

@ Fernando68, bu ayrı bir soru olarak ele alınabilir - yorumlarda bir tartışma tam olarak uygun değildir. Ben bir .NET mühendis değilim, ama açıkça .NET satır satır derleme değil. Bu bir Xml dosyasıdır ve bu nedenle hiyerarşiktir. Ancak, hiyerarşi zayıf bir şekilde oluşturulmuşsa, Xml ayrıştırıcısı ayrıştırılırken bir istisna atar. Başka bir deyişle, tüm Xml dosyasını bir bütün olarak almalıdır - ancak kötü Xml ile karşılaşırsa gerekli nesneyi oluşturamaz!
Siber Savaşçı

Zaten ayrı bir soru olarak gündeme getirdim stackoverflow.com/questions/30471043/… . Yanıtınız için teşekkürler, bu da diğer gönderime aldığım cevaplar. Şerefe
Fandango68

10

Sharepoint 2010 uygulamalar için, yapmanız gerekir ayrıca düzenleme C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.configve tanımlar<customErrors mode="Off" />


7

Burada açıklanan şeylerin çoğunu denedim. VWD kullanıyordum ve içerdiği varsayılan web.config dosyası:

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>

Mode = "RemoteOnly" i mode = "Off" olarak değiştirdim. Hala neşe yok. Daha sonra IIS yöneticisini, özelliklerini, ASP.Net Sekmesini, Yapılandırmayı düzenle'yi kullandım, sonra CustomeErrors sekmesini seçtim. Bu hala RemoteOnly'yi gösterdi. Bunu Kapalı olarak değiştirdim ve son olarak ayrıntılı hata mesajlarını görebiliyordum.

Web.config dosyasını incelediğimde system.web'de iki CustomErrors düğümü olduğunu gördüm; ve sadece ikinci girişin (değiştirdiğim bir yorumun içinde olduğunu) fark ettim. Bu yüzden uzak bir sunucuda web.config dosyasını incelemek için not defteri kullanmamaya çalışın.

Ancak, IIS düzenleme yapılandırma öğelerini kullanırsanız, web.config dosyasındaki hatalardan şikayet eder. Ardından, "web.config dosyasında bir XML sözdizimi hatası var mı?"


Web Sitesi düzeyinde web.config dosyasını değiştirmek benim için çalıştı. Daha önce başarısız olan uygulamanın web.config dosya yükleri ile uğraşmıştım. Teşekkürler!
The1nk

7

Aslında bunu düzeltmek için çalışan tek cevap burada buldum: https://stackoverflow.com/a/18938991/550975

Sadece şunu ekleyin web.config:

<configuration>  
  <system.webServer>  
    <httpErrors existingResponse="PassThrough"/>  
  </system.webServer>  
<configuration>

3
Bulduğum <httpErrors errorMode="Detailed" />tüm bilgileri bana verdim``
alastairtree


5

Ben de bu sorun vardı, ama Apache ve mod_mono kullanırken. Bu durumda olan herkes için, yeni sürümü okunmaya zorlamak için web.config dosyasını değiştirdikten sonra Apache'yi yeniden başlatmanız gerekir.


5

Hala bu sayfayı alıyorsanız, büyük olasılıkla Web'i geçmeden önce havaya uçuyor olabilir.

ASP.Net'in .Net Framework klasörleri, IIS Metatabanı, vb. İçin gereken izinlere sahip olduğundan emin olun. ASP.Net'in doğru olarak yüklendiğini ve IIS'de doğru bir şekilde ilişkilendirildiğini kontrol etmenin herhangi bir yolu var mı?

Düzenleme: Greg'in yorumundan sonra bana meydana geldi ben senin tüm çok minimal web.config yayınladı ne olduğunu varsayalım, daha var mı? Öyleyse tüm web.config dosyasını gönderebilirsiniz?


Bu sorunla birkaç kez karşılaştığımda, web.config'de bir hata olduğu ortaya çıktı - kesinlikle ilk önce ince dişli bir tarakla geçin.
Greg Hurlman

Evet, bıktım web.config dosyamı bu minimum ayarlara geçersiz kıldım. Hala sevinç yok
Radu094

Kullanılan uygulama havuzundaki kullanıcının, uygulamamın dağıtıldığı dizine okuma izinleri yoktu. Sorun olduğunu bana bildirmek için neden bir hata alamadığımı hala anlayamıyorum.
lambacck

Genellikle bu hata yalnızca sistem / güvenlik olay günlüğünde (IIS 7'ye kadar) bulunabilir, ancak çoğu durumda olay günlüğüne kolayca erişmek sorun yaratır.
Nick Craver

5

Benim sorunum bu benim web.config tanımlanmış olmasıydı

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <remove statusCode="500" />
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
  <error statusCode="500" responseMode="ExecuteURL" path="/Error/Internal" />
</httpErrors>

2
Bir <httpErrors errorMode="Detailed"örnek olarak yardımcı olmak için
it3xl

2

Aslında, web uygulamamı barındırırken anladığım şey, yerel Makinenizde geliştirdiğiniz kodun, hosting şirketinin size sunduğundan daha yüksek bir sürüm olmasıdır. Yönetici ayrıcalıklarınız varsa, Microsoft ASP.NET sürüm desteğini web barındırma ayarı altında değiştirebilirsiniz.


2

Bu sorunu yaşadık ve bunun nedeni IIS kullanıcısının web sunucusundaki makine yapılandırmasına erişiminin olmamasıydı.


2

Ayrıca bu hatayla karşılaştık ve bizim durumumuzda, uygulama havuzu kullanıcısının artık web.config dosyasına izinleri olmamasıydı. İzinlerini kaybetmesinin nedeni (daha önce her şey iyiydi), bir rar dosyasında sitenin yedeğine sahip olmamız ve web.config dosyasının yedek bir sürümünü rar'dan siteye sürüklememdi. Bu, oturum açmış olan kullanıcı hariç, web.config dosyasının tüm izinlerini kaldırmış gibi görünüyor.

Bunu anlaması biraz zaman aldı çünkü klasör düzeyinde izinleri tekrar tekrar kontrol ettim, ancak asla dosya düzeyinde değil.


2

Ben aynı sorunu vardı ama farklı bir şekilde çözüm bulundu.

-

Oldu Yaptığım şey, ben açtı Gelişmiş Ayarlar için uygulama havuzu içinde IIS Yöneticisi .

Ben Orada set 32-Bit Uygulamaları Etkinleştir için true .


1

Uygulamayı yeniden başlatmayı deneyin (silmekten daha bir app_offline.htm oluşturmak) ve aynı hata iletisini almaya devam ediyorsanız, customErrors öğesini yalnızca bir kez web.config dosyasında veya bunun gibi bir şey bildirdiğinizden emin olun. Web.config dosyasındaki hataların uygulama üzerinde tuhaf bir etkisi olabilir.


1
web.config dosyasını her değiştirdiğinizde web sitesi yeniden başlatılır, bir app_offline.htm oluşturmanıza gerek kalmaz!
Matt Frear

doğru, uygulamayı sıfırlamak için app_offline'ı neden önerdiğimi bilmiyorum. :)
Adam Vigh

1

Web.config dosyasında æøå gibi özel bir karakterin var mı? Öyleyse kodlamanın utf-8 olarak ayarlandığından emin olun.


1

Bu web uygulaması, bir web sitesinin dizin ağacındaki diğer uygulamaların altında mı ayarlanmış? Varsa, diğer ayarlar için üst web.config dosyalarına bakın. Ayrıca, dizininizin IIS'de bir uygulama dizini olarak ayarlanmasını sağlayın.


1

MVC önizleme 4'ü kullanıyorsanız, HandleErrorAttribute kullandığınız için bunu yaşıyor olabilirsiniz. Özel hataları kapatırsanız, davranış özel durumları işlemeyecek şekilde 5'te değişmiştir.


1

Web sitesini sunucu makinesindeki bir tarayıcıda açmayı da deneyebilirsiniz. Çok fazla ASP.NET geliştirme yapmıyorum, ancak özel hataların bir güvenlik önlemi olarak sadece tam hata metnini sunucuda görüntülemek için bir ayarı olduğunu hatırlıyorum.


1

Ben de benzer bir konuyu ele aldım. Benim durumumda 2.0 web uygulaması başlatmak için çalışırken varsayılan site asp.net sürümü 1.1 oldu. Hata oldukça önemsizdi, ancak özel hataların neden ortadan kalkmayacağı hemen belli değildi ve çalışma zamanı hiçbir zaman olay günlüğüne yazmadı. Açık olan düzeltme, IIS'nin Asp.Net sekmesindeki sürümü eşleştirmekti.


aynı sorunu yaşadık. "connectionstrings" düğümü çerçeve 1.1 altında hataya neden olurken, uygulama 2.0 olmalıdır
mosheb

1

Ayrıca yaptığım gibi website.config dosyasını değil, web.config dosyasını düzenlediğinizden emin olun.


0

Ben de aynı sorunu yaşadım ve nedeni IIS ASP.NET 1.1 çalıştırıyordu ve site .NET 2.0 gerekli.

Hata mesajı beni birkaç saat boyunca yoldan atmaktan başka bir şey yapmadı.


0

Sistemden hemen sonra eklediğinizden emin olun. Web

Düğümün sonuna doğru koydum ve işe yaramadı.


0

Bir yapılandırma dönüşümü gerçekleştiriyorsanız, aşağıdaki satırı ilgili web.config dosyasından da kaldırmanız gerekebilir.

<compilation xdt:Transform="RemoveAttributes(debug)" />

0

Burada tüm cevapları denedikten sonra, Application_Erroryöntemimin bu olduğu ortaya çıktı :

Server.ClearError();
Response.Redirect("/Home/Error");

Bu satırları kaldırmak ve ayarlamak sorunu çözdü. (İstemci yine de ile hata sayfasına yönlendirilir customErrors="On").


0

Aynı sorunu yaşadım ve bunun gerçekleştiği istisna nedeniyle olay görüntüleyici uygulama günlüğüne geçtim. Benim durumumda istisna aşağıdaki gibiydi ...

İstisna bilgileri:

Exception type: HttpException 
Exception message: The target principal name is incorrect.  Cannot generate SSPI context.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

The target principal name is incorrect.  Cannot generate SSPI context.

Uygulama havuzunda yeni şifremi güncelledim ve benim için çalışıyor.


0

Bazı durumlarda web.config dosyasının doğru biçimlendirilmemiş olması da mümkündür. Bu durumda, önce çalışacak şekilde satır satır geçmeniz gerekir. Çoğu zaman, yeniden yazma kuralları burada suçludur.


0

Bu gerçekten garip. Bu hatayı aldım ve sunucumu yeniden başlattıktan sonra kayboldu.


0

Benim için sistem.web üstündeki web.config dosyasında daha yüksek bir hataydı.

blah dosyası yoktu, bu yüzden bir noktada hata veriyordu. Henüz System.Web bölümüne gelmediğinden, CUstomErrors için sunucu varsayılan ayarını kullanıyordu (Açık)


(Bu yazı soruya kaliteli bir cevap vermiyor gibi görünüyor . Lütfen cevabınızı düzenleyin ve geliştirin ya da sadece soruya yorum olarak gönderin.)
sɐunıɔ ןɐ qɐp
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.