asp.net - 如何在 ASP.NET Application_Error 事件中确定当前请求是否为异步回发

标签 asp.net asyncpostbackerror

是否可以从 Application_Error 事件中确定当前请求是否是异步回发(部分页面更新)?

使用异步回发时处理应用程序错误的最佳方法是什么?

在 Application_Error 中,我们重定向到不同的错误页面,但在异步回发期间引发错误时,该页面无法正常工作。我们注意到,即使AllowCustomErrorsRedirect = false,这也成立,并且我们有一个 OnAsyncPostBackError 处理程序来设置 AsyncPostBackErrorMessage。在异步回发期间,我们的 AsyncPostBackErrorMessage 会被覆盖,并且客户端会收到一般网页错误。

最佳答案

Application_Error方法您不再可以直接访问 <asp:ScriptManager>页面上的控制。所以现在处理它的AsyncPostBackError已经太晚了。事件。

如果您想阻止重定向,您应该检查请求以查看它实际上是否是异步请求。 <asp:UpdatePanel>导致回发带有以下 HTTP header :

X-MicrosoftAjax:Delta=true

(另请参阅:ScriptManager Enables AJAX In Your Web Apps)

对此 header 的检查将如下所示:

HttpRequest request = HttpContext.Current.Request;
string header = request.Headers["X-MicrosoftAjax"];
if(header != null && header == "Delta=true") 
{
  // This is an async postback
}
else
{
  // Regular request
}

至于什么是处理异常的适当方法是另一个问题,恕我直言。

关于asp.net - 如何在 ASP.NET Application_Error 事件中确定当前请求是否为异步回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978113/

相关文章:

asp.net - ScriptManager1.AsyncPostBackErrorMessage 未显示错误消息

c# - 回发后将不同的控件分配给相同的 ID - ASP.NET

javascript - asp.net OnTextChanged 未触发

javascript - SWFUpload ASP.Net 示例站点不工作?

javascript - 是否有可能在客户端有一个进度条链接到 saveAs() 的进度?

c# - 在 vnext 应用程序中测试 IActionResult 内容

c# - Asp.Net 结合 C# 和 Angular

asp.net - AsyncPostBackTrigger 找不到 LinkBut​​ton