我想在发生异常时使用Response.Redirect重定向浏览器。
我也想将异常消息传递给我的错误页面。重定向到错误页面
例如:
string URL = "Page2.aspx?Exception=" + ex.ToString()
Response.Redirect(URL)
能不能做到?这是正确的语法?
我想在发生异常时使用Response.Redirect重定向浏览器。
我也想将异常消息传递给我的错误页面。重定向到错误页面
例如:
string URL = "Page2.aspx?Exception=" + ex.ToString()
Response.Redirect(URL)
能不能做到?这是正确的语法?
而不是Response.Redirect
,它向客户端发送一个响应,要求它请求不同的页面,您应该调用Server.Transfer
,立即运行不同的页面并将该页面直接发送到客户端。
然后,您可以在HttpContext.Items
中输入异常,并在错误页面中从HttpContext.Items
中读取异常。
例如:
catch (Exception ex) {
HttpContext.Current.Items.Add("Exception", ex);
Server.Transfer("Error.aspx");
}
在Error.aspx
,你就可以得到这样的例外:
<%
Exception error;
if (!HttpContext.Current.Items.Contains("Exception"))
Response.Redirect("/"); //There was no error; the user typed Error.aspx into the browser
error = (Exception)HttpContext.Current.Items["Exception"];
%>
是,将工作(添加,当然一些分号,你可能只是想发送的异常消息):
String URL = "Page2.aspx?Exception=" + ex.Message;
Response.Redirect(URL);
通常我会在我的网页板,并在catch块切换可见向用户显示友好的消息。我还会在自己的电子邮件中包含详细报告错误信息的报告。
try
{
}
catch (Exception ex)
{
formPanel.Visible = false;
errorPanel.Visible = true;
// Log error
LogError(ex);
}
至于报告/转发错误到另一页:
string errorURL = "ErrorPage.aspx?message=" + ex.Message;
Response.Redirect(errorURL, true);
而且不要忘记ELMAH! http://bit.ly/HsnFh
正如安德鲁所说,它应该工作。
但是,如果您正在寻找错误管理,那么最好使用Server.GetLastError()
,以便获得完整的包含堆栈跟踪的Exception
对象。
这里是一般的MSDN article that deals with Application Errors和使用Server.GetLastError()
。
我们总是建议对重定向到一个.aspx页上的错误条件。
过去我们已经看到了一些场景,其中应用程序的一个基本问题导致了错误的发生,然后又重定向到一个error.aspx页面,该页面自身出现了错误,导致无尽的重定向循环。
我们强烈建议人们使用.htm页面或某些不由ASP.NET框架处理的错误页面。
在ASP.NET中使用Web.config的customErrors
部分内置了支持,可以为您自动处理错误重定向。
你可以看看全球的异常处理过,这可以通过该Application_OnError
事件,你可以在Global.asax内找到
由于管理,
菲尔