2015-01-22 10 views
5

Jeśli Application_Error jest wyzwalany przez wyjątek podczas uruchamiania aplikacji, tj. RouteConfig lub BundleConfig, w jaki sposób można sprawdzić, czy dostępna jest wersja Request/Response? Obecnie połączenie z numerem Response.Clear rzuca System.Web.HttpException o dodatkowe informacje Response is not available in this context.Jak sprawdzić, czy żądanie/odpowiedź jest dostępne w Application_Error?

void Application_Error(object sender, EventArgs e) 
{ 
    //Log error 
    Log.Error(e); 

    //Clear 
    Response.Clear(); 
    Server.ClearError(); 

    //Redirect 
    Response.Redirect("~/Error"); 
} 

Inne pytania sugerują przepisywanie nie używać Response lub użyć HttpContext.Current.Response lub zmieniając IIS config.

Podsumowując; jak mogę sprawdzić, czy błąd wystąpił podczas uruchamiania aplikacji?

Odpowiedz

4

Chcesz sprawdzić, czy jest to HttpException.

protected void Application_Error(Object sender, EventArgs e) 
{ 
    var exception = Server.GetLastError(); 

    // Log error 
    LogException(exception); 

    var httpException = exception as HttpException; 
    if (httpException != null) 
    { 
     Response.Clear(); 
     Server.ClearError(); 
     Response.TrySkipIisCustomErrors = true; 

     Response.Redirect("~/Error"); 
    } 
} 
+0

Czy każdy wyjątek zgłoszony w wyniku żądania spowoduje wyjątek HttpException? –

+0

@RDay Nie, nie będzie. Ta odpowiedź nie jest pomocna. – marsze

Powiązane problemy