【发布时间】:2010-03-15 20:26:10
【问题描述】:
web.config:
<customErrors mode="On" defaultRedirect="~/Foo.aspx" />
当 Foo.aspx.cs 运行时,我怎么知道是一个未捕获的异常将我发送到 Foo.aspx?
【问题讨论】:
标签: asp.net error-handling custom-errors
web.config:
<customErrors mode="On" defaultRedirect="~/Foo.aspx" />
当 Foo.aspx.cs 运行时,我怎么知道是一个未捕获的异常将我发送到 Foo.aspx?
【问题讨论】:
标签: asp.net error-handling custom-errors
检查Server.GetLastError() 并检查Response.StatusCode 以确定页面被调用的原因。
如果您在web.config 上设置customErrors 元素,则只有在出现未知状态时才会调用defautRedirect 页面,也就是说,如果您为状态代码 404 和 403 指定自定义页面,例如,您的foo.aspx 页面仅在出现不同状态时才会被调用。
【讨论】:
void Application_Error(object sender, EventArgs e)
{
HttpContext ctx = HttpContext.Current;
Exception exception = ctx.Server.GetLastError();
ctx.Server.ClearError();
ctx.Server.Transfer("Foo.aspx?ERROR" + exception.Message);
}
此方法将在您转到 Foo.aspx 之前触发,因此您可以发现您来自错误而不是重定向。然后,您可以将 QueryString 变量附加到 url,以便 Foo.aspx 可以使用该数据。
不确定您的最终目标是什么,但如果您尝试根据异常自定义错误消息出现,您可以这样处理。
【讨论】:
global.asax。只需检查Server.GetLastError() 方法。
代码:
if (!string.IsNullOrEmpty(Request["aspxerrorpath"])) {
....
}
我希望有更好的东西吗?
【讨论】: