ASP.Net Response.Redirect在Application_Error中不起作用?

时间:2010-12-14 03:53:39

标签: asp.net redirect

我不知道为什么在将代码部署到IIS7时Response.Redirect无法正常工作?始终显示白色/黄色错误页面而不是我的Errors.aspx。但是当在我的计算机上使用Visual Studio运行调试时,它运行得很好吗?

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);
        }

5 个答案:

答案 0 :(得分:27)

我遇到了同样的问题并用以下方法解决了:

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

对我来说,以下代码有效。

HttpContext.Current.Server.ClearError();
HttpContext.Current.Response.Redirect("~/ErrorPage.aspx");

答案 3 :(得分:0)

尝试在web.config中关闭CustomError。它将为您提供有关错误详细信息的更多具体信息。也许它不是来自Response.Redirect的错误。

答案 4 :(得分: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;
}