2010-08-18 6 views
21

Generalmente rileviamo eccezioni non gestite in Global.asax, quindi reindirizziamo a una pagina di errore descrittiva. Questo va bene per l'ambiente Live, ma nel nostro ambiente di sviluppo vorremmo controllare se CustomErrors è disattivato e, in tal caso, lanciare il brutto errore.C'è un modo per controllare, a livello di programmazione, se CustomErrors di un'applicazione ASP.NET sono impostati su Off?

C'è un modo semplice per verificare se CustomErrors è disattivato tramite codice?

+0

possibile duplicato del [CustomErrors Controllo attivata nel Codice] (http://stackoverflow.com/questions/1367640/checking-customerrors-turned-on-in-code) – Naz

risposta

12

Sì, il tramite WebConfigurationManager:

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

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

Una volta che avete la sezione, è possibile verificare se la modalità è attivata o disattivata come segue:

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

Questo dovrebbe fare il trucco .. .

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

io suggerirei di usare la seguente proprietà:

0.123.
HttpContext.Current.IsCustomErrorEnabled 

Come accennato here, IsCustomErrorEnabled vuole più le cose come RemoteOnly in considerazione:

La proprietà IsCustomErrorEnabled combina tre valori di dirvi se gli errori personalizzati sono abilitati per una particolare richiesta. Questo non è semplice come leggere il file web.config per controllare la sezione . C'è un po 'di più dietro le quinte per davvero determinare se gli errori personalizzati sono abilitati.

La proprietà guarda a questi tre valori:

  1. del web.config distribuzione <> superfici di vendita di sezione. Questa è una proprietà utile da impostare quando si distribuisce l'applicazione su un server di produzione . Questo sostituisce qualsiasi altra impostazione per errori personalizzati.

  2. La proprietà della sezione della sezione customErrors di web.config. Questa impostazione indica se gli errori personalizzati sono abilitati, e in tal caso se sono abilitati solo per le richieste remote.

  3. La proprietà IsLocal dell'oggetto HttpRequest. Se gli errori personalizzati sono abilitati solo per le richieste remote , è necessario sapere se la richiesta proviene da un computer remoto .

+4

Questo dovrebbe essere il accettata risposta. –

Problemi correlati