我们有一个全局异常类,它抓取Web应用程序中的所有异常。一般响应是将用户重定向到错误页面。
现在,当从“更新”面板引发异常时,response.redirect会抛出一个异常,说明服务器在发送HTTP标头后无法清除标头。带有此堆栈跟踪:
System.Web.Handlers.ScriptModule.EndRequestHandler(Object sender,System.Web.HttpResponse.ClearHeaders()上的EventArgs e)at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)
我已经尝试过, 1. JS脚本 2.清除标题和内容
答案 0 :(得分:0)
有趣的问题。我以前从来没有这样,但这就是我发现的
http://aspdotnetcodebook.blogspot.com/2008/03/using-responseredirect-in-aspnet-ajax.html
希望有所帮助。
答案 1 :(得分:0)
我相信您可以使用页面请求管理器来处理异步回发错误。
http://msdn.microsoft.com/en-us/library/bb383810.aspx
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined)
{
var errorMessage = args.get_error().message;
args.set_errorHandled(true);
ToggleAlertDiv('visible');
$get(messageElem).innerHTML = errorMessage;
}
}
答案 2 :(得分:0)
如何执行全局异常类?来自global.app_error?
此外,您可能已将true
添加为Response.Redirect的第二个arg - 它会快速结束响应(在您的app_error执行之前)。这意味着服务器完成了向客户端发送字节:它已经计算了响应长度,在响应头中包含了该值,并且响应头已经被发送到客户端。你无法撤消(通过清除它们,或者无论如何)。
如果是这种情况(true
arg),请尝试将其设置为false
(或不提供第二个参数),看看会发生什么。