Response.Redirect无法在Global.asax中工作

我创建了一个错误页面,显示所有未处理exception的常规消息。

这是Global.asax中的代码

HttpContext ctx = HttpContext.Current; string e404_PAGE = ctx.Request.AppRelativeCurrentExecutionFilePath.ToString(); string e404_LINE = ctx.Server.GetLastError().InnerException.StackTrace.Substring(ctx.Server.GetLastError().InnerException.StackTrace.LastIndexOf(":line ") + 6, ctx.Server.GetLastError().InnerException.StackTrace.Substring(ctx.Server.GetLastError().InnerException.StackTrace.LastIndexOf(":line ") + 6).IndexOf(" ")).ToString(); string e404_MESSAGE = ctx.Server.GetLastError().InnerException.Message.ToString(); string e404_METHODNAME = ctx.Server.GetLastError().InnerException.TargetSite.ToString(); string e404_STACKTRACE = ctx.Server.GetLastError().InnerException.StackTrace.ToString(); string e404_URL = ctx.Request.Url.ToString(); string e404_DATE = ctx.Timestamp.ToString("yyyy-MM-dd HH:mm:ss"); string e404_USER = ctx.User.Identity.Name.ToString(); string e404_IP = ctx.Request.UserHostAddress.ToString(); // * * * // System.Data.SqlClient.SqlConnection sql_conn; sql_conn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ToString()); sql_conn.Open(); string query = @"insert into UnhandledExceptions(Message, Page, Line, MethodName, StackTrace, URL, Date, [User], IP) values(@Message, @Page, @Line, @MethodName, @StackTrace, @URL, @Date, @User, @IP) select scope_identity();"; System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand(query, sql_conn); com.Parameters.AddWithValue("@Message", e404_MESSAGE); com.Parameters.AddWithValue("@Page", e404_PAGE); com.Parameters.AddWithValue("@Line", e404_LINE); com.Parameters.AddWithValue("@MethodName", e404_METHODNAME); com.Parameters.AddWithValue("@StackTrace", e404_STACKTRACE); com.Parameters.AddWithValue("@URL", e404_URL); com.Parameters.AddWithValue("@Date", e404_DATE); com.Parameters.AddWithValue("@User", e404_USER); com.Parameters.AddWithValue("@IP", e404_IP); string e404_ID = com.ExecuteScalar().ToString(); sql_conn.Close(); // * * * // Session["e404_ID"] = e404_ID; Response.Redirect("~/Error.aspx"); 

当我发布网站时,用户不会被重定向到错误页面。

直到最后一行的所有代码都能正常工作。 有什么建议吗?

替换Response.Redirect("~/Error.aspx"); 有:

 // You've handled the error, so clear it. Leaving the server in an error state can cause unintended side effects as the server continues its attempts to handle the error. Server.ClearError(); // Possible that a partially rendered page has already been written to response buffer before encountering error, so clear it. Response.Clear(); // Finally redirect, transfer, or render a error view Response.Redirect("~/Error.aspx");