2010-12-14 11 views
13

Nie wiem, dlaczego Response.Redirect nie działa poprawnie, gdy wdrażam mój kod do IIS7? Biała/żółta strona błędu zawsze wyświetla się zamiast mojego pliku Errors.aspx. Ale kiedy debugowanie działa przy użyciu Visual Studio na moim komputerze, działa dobrze?ASP.Net Response.Redirect nie działa w Application_Error?

protected void Application_Error(object sender, EventArgs e) 
     { 
      ILog log = LogManager.GetLogger(typeof(Global).Name); 
      Exception objErr = Server.GetLastError().GetBaseException(); 
      log.Error(objErr); 
      string err = "Error Caught in Application_Error event\n" + 
        "\nError Message:" + objErr.Message.ToString() + 
        "\nStack Trace:" + objErr.StackTrace.ToString(); 
      EventLog.WriteEntry("Kiosk", err, EventLogEntryType.Error); 
      Server.ClearError(); 
      Response.Redirect("~/Error.aspx", false); 
     } 
+0

jeśli dołączyć debugger, można włamać się na kodzie, czy Response.Redirect jest faktycznie nazywa? –

+0

cóż, debugowałem przy użyciu Visual Studio na moim komputerze i działa dobrze. Ale kiedy wdrażam do IIS, to już nie działa – Leo

Odpowiedz

0

Spróbuj wyłączyć CustomError w web.config. Daje ci bardziej szczegółowe informacje na temat szczegółów błędu. Może to nie błąd z Response.Redirect.

+0

Tak, próbowałem już, wiem, który błąd, który doprowadził do tego Application_Error, aby był wywoływany i został poprawnie zarejestrowany przez powyższe kody logowania, ale nadal nie przekierowuje do Error.aspx :( – Leo

26

miałem ten sam problem i rozwiązać go z:

HttpContext.Current.ClearError();    
Response.Redirect("~/Error.aspx", false); 
return; 
+1

Tak, działa to świetnie. – adinas

0
HttpContext.Current.Server.ClearError(); 
HttpContext.Current.ClearError(); 
==================================================================== 
Redirect to NEW VIRTUAL! directory (Error) 
HttpContext.Current.Response.Redirect([http://localhost:8990/Error/ErrorPageServer.aspx]); 
1

Dla mnie poniższy kod pracował.

HttpContext.Current.Server.ClearError(); 
HttpContext.Current.Response.Redirect("~/ErrorPage.aspx"); 
0
protected void Application_Error(object sender, EventArgs e) 
{    
    Exception objErr = Server.GetLastError().InnerException; 
    //Logging.WriteToErrorLog("Error Caught in Application_Error event", objErr); 
    HttpContext.Current.Server.ClearError(); 
    HttpContext.Current.Application.Add("test", objErr); 
    HttpContext.Current.Response.Redirect("~/Home/Index"); 
    return; 
} 
Powiązane problemy