我的Global.asax文件中有一个Application_Error处理程序。但是,我使用XHR请求加载了许多页面,并且宁愿这些“子页面”返回javascript或真正的500代码供我的主应用程序处理,而不是错误页面。
是否可以以不同的方式处理某些页面上的错误?主页是否可以在扩展它的页面中处理自己的错误而不将其冒泡到Global.asax?
谢谢!
答案 0 :(得分:1)
Global.asax中的Application_Error处理程序将应用于Web应用程序中的所有未处理错误(您可以并且应该在页面方法中执行特定的错误处理),但是您可以将逻辑放在是否或不是你在Application_Error处理程序中调用 Server.ClearError 。
来自http://support.microsoft.com/kb/306355:
如果您不调用Server.ClearError 或者在Page_Error中捕获错误 Application_Error事件处理程序, 根据设置处理错误 在< customErrors>中部分 Web.config文件。
答案 1 :(得分:1)
您的Global.asax处理错误的原因是因为这是您应用中任何不良异常的后退事件处理程序。确保处理您将执行异步请求的错误(尝试{} catch {})。
我认为您也应该能够更改响应代码,因此如果您捕获异常,您的代码将返回500响应。
通常情况下,如果失败的请求会破坏功能,我想返回错误消息并将其显示为javascript警报。
我不确定母版页是否可以处理其封装的页面错误?您没有将异步终点放在.asmx文件中的原因吗?
答案 2 :(得分:1)
另一个争论点是你注册的任何HttpModule也可以进行错误处理。
答案 3 :(得分:1)
在我的页面中处理Page_Error事件似乎是我想要的:
protected void Page_Error(object sender, EventArgs e) {
var ex = Server.GetLastError().GetBaseException();
Response.StatusCode = 500;
Response.Redirect("~/SubError.aspx", true);
}
在我的SubError.aspx页面中,我有我的应用程序特定的javascript。