2010-08-18 12 views
21

Genellikle Global.asax'ta işlenmeyen özel durumları yakalarız ve ardından güzel ve kolay bir hata sayfasına yönlendiririz. Bu Live ortamı için iyi, ancak geliştirme ortamımızda CustomErrors'un Off olup olmadığını kontrol etmek istiyoruz ve eğer öyleyse, sadece çirkin hatayı atmak.Bir ASP.NET uygulamasının CustomErrors öğesi Kapalı olarak ayarlanmışsa, program aracılığıyla, denetlemek için bir yol var mı?

CustomErrors'un kodu kapalı olup olmadığını kontrol etmenin kolay bir yolu var mı? WebConfigurationManager aracılığıyla

+0

olası yinelenen (http://stackoverflow.com/questions/1367640/checking-customerrors-turned-on-in-code) – Naz

cevap

12

Evet,: Eğer bölümünü aldıktan sonra

System.Configuration.Configuration configuration = 
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/"); 

System.Web.Configuration.CustomErrorsSection section = 
    (CustomErrorsSection)configuration.GetSection("system.web/customErrors"); 

, aşağıdaki gibi modu açık veya kapalı olup olmadığını kontrol edebilirsiniz:

CustomErrorsMode mode = section.Mode; 
if (mode == CustomErrorsMode.Off) 
{ 
    // Do something 
} 
1

Bu hile yapmak gerekir .. .

using System.Web.Configuration; 
using System.Configuration; 

// pass application virtual directory name 
Configuration configuration = WebConfigurationManager.OpenWebConfiguration("/TestWebsite"); 
CustomErrorsSection section = (CustomErrorsSection)configuration.GetSection("system.web/customErrors"); 
CustomErrorsMode mode=section.Mode; 
32
aşağıdaki özelliğini kullanarak öneririm

:

HttpContext.Current.IsCustomErrorEnabled 

olarak here, IsCustomErrorEnabled dikkate RemoteOnly gibi daha fazla şeyler alır sözü:

IsCustomErrorEnabled mülkünde özel hatalar, belirli bir istek için etkin olup olmadığını size anlatmak için üç değer birleştirir. Bu, bölümünü kontrol etmek için web.config dosyasını okumaktan kadar basit değildir. Özel hataların etkin olup olmadığını gerçekten olarak belirlemek için sahnelerin arkasında biraz daha var.

özellik bu üç değerlere bakar:

  1. web.config en < dağıtım> bölümün perakende özelliği. Bu, uygulamanızı bir üretim sunucusuna dağıtırken ayarlanması gereken kullanışlı özelliğidir. Bu, özel hatalar için diğer ayarları geçersiz kılar.

  2. Web.config'in < customErrors> bölümünün mode özelliği. Bu ayar , özel hataların hiç etkin olup olmadığını ve varsa 'un yalnızca uzak istekler için etkinleştirilip etkinleştirilmediğini belirtir.

  3. HttpRequest nesnesinin IsLocal özelliği. Özel hatalar yalnızca uzaktan istekleri için etkinleştirildiyse, isteğin uzak bir bilgisayarından olup olmadığını bilmeniz gerekir. arasında

+4

Bu kabul edilmelidir [Denetleme customErrors Kanununda açık] Cevap. –

İlgili konular