更新面板,结束请求处理程序,没有错误对象?
Update panel, end request handler, no error object?
全部,
当我从 asp.net 2.0 升级到 asp.net 3.5 并且现在在我的自定义结束请求处理程序中时,args.get_error() returns null(我跟踪了所有函数 Sys$WebForms$PageRequestManager$_endPostBack(error, response) 的方法,那里的错误对象也是空的)。这发生在我的生产服务器上,在我的开发机器上它工作,我得到错误对象。
都是win 7机器,IIS 7.5.
仅供参考:在服务器上,我记录了错误,并通过 ctx.Server.ClearError(); 清除了它;
然后我在脚本管理器上设置了 AsyncPostBackErrorMessage。
**更新:
通过在 ScriptManager 上设置 AllowCustomErrorsRedirect="false" 明确解决了这个问题。 **
在 MSDN 上找到这个小解释:
备注
异步回发期间出现页面错误时会引发 AsyncPostBackError 事件。服务器上的错误如何发送到客户端取决于 AllowCustomErrorsRedirect 属性、AsyncPostBackErrorMessage 属性 和 Web.config 文件的自定义错误部分。
这是处理 ajax 错误的客户端脚本代码:
mgr.add_beginRequest(function(sender, args) {
postBackElem = args.get_postBackElement();
if (typeof(postBackElem) === 'undefined')
return;
targetPnl = self.getTargetPnl(mgr, postBackElem);
$(targetPnl).addClass('updateprogress-started', duration);
}); //beginRequest
mgr.add_endRequest(function(sender, args) {
if (typeof(postBackElem) === 'undefined')
return;
$(targetPnl).removeClass('updateprogress-started', duration);
if (args.get_error() != undefined){
var msg;
if (args.get_response().get_statusCode() == '200') {
msg = args.get_error().message.replace("Sys.WebForms.PageRequestManagerServerErrorException: ", "");
}
else {
msg = 'An unspecified error occurred.'; // error occurred somewhere other than the server page
}
args.set_errorHandled(true); // show error in our custom panel
$(self._errText).text(msg);
$(self._errPanel).show();
}
}); //endRequest
通过在 ScriptManager 上设置 AllowCustomErrorsRedirect="false" 明确解决了这个问题。
全部,
当我从 asp.net 2.0 升级到 asp.net 3.5 并且现在在我的自定义结束请求处理程序中时,args.get_error() returns null(我跟踪了所有函数 Sys$WebForms$PageRequestManager$_endPostBack(error, response) 的方法,那里的错误对象也是空的)。这发生在我的生产服务器上,在我的开发机器上它工作,我得到错误对象。 都是win 7机器,IIS 7.5.
仅供参考:在服务器上,我记录了错误,并通过 ctx.Server.ClearError(); 清除了它; 然后我在脚本管理器上设置了 AsyncPostBackErrorMessage。
**更新: 通过在 ScriptManager 上设置 AllowCustomErrorsRedirect="false" 明确解决了这个问题。 **
在 MSDN 上找到这个小解释:
备注
异步回发期间出现页面错误时会引发 AsyncPostBackError 事件。服务器上的错误如何发送到客户端取决于 AllowCustomErrorsRedirect 属性、AsyncPostBackErrorMessage 属性 和 Web.config 文件的自定义错误部分。
这是处理 ajax 错误的客户端脚本代码:
mgr.add_beginRequest(function(sender, args) {
postBackElem = args.get_postBackElement();
if (typeof(postBackElem) === 'undefined')
return;
targetPnl = self.getTargetPnl(mgr, postBackElem);
$(targetPnl).addClass('updateprogress-started', duration);
}); //beginRequest
mgr.add_endRequest(function(sender, args) {
if (typeof(postBackElem) === 'undefined')
return;
$(targetPnl).removeClass('updateprogress-started', duration);
if (args.get_error() != undefined){
var msg;
if (args.get_response().get_statusCode() == '200') {
msg = args.get_error().message.replace("Sys.WebForms.PageRequestManagerServerErrorException: ", "");
}
else {
msg = 'An unspecified error occurred.'; // error occurred somewhere other than the server page
}
args.set_errorHandled(true); // show error in our custom panel
$(self._errText).text(msg);
$(self._errPanel).show();
}
}); //endRequest
通过在 ScriptManager 上设置 AllowCustomErrorsRedirect="false" 明确解决了这个问题。