【问题标题】:Update panel, end request handler, no error object?更新面板,结束请求处理程序,没有错误对象?
【发布时间】:2016-09-07 15:28:23
【问题描述】:

全部,

当我从 asp.net 2.0 升级到 asp.net 3.5 时,现在在我的自定义结束请求处理程序中,args.get_error() 返回 null(我一直跟踪到函数 Sys$WebForms$PageRequestManager$_endPostBack(错误,响应),错误对象在那里也为空)。这发生在我的生产服务器上,在我的开发机器上它可以工作,我得到错误对象。 两者都是win 7机器,IIS 7.5。

仅供参考:在服务器上,我记录错误,并通过 ctx.Server.ClearError(); 清除它 然后我在脚本管理器上设置了 AsyncPostBackErrorMessage。

**更新: 通过在 ScriptManager 上设置 AllowCustomErrorsRedirect="false" 可以显式解决问题。 **

在 MSDN 上找到了这个小解释:

https://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.allowcustomerrorsredirect(v=vs.110).aspx

备注

在异步回发期间出现页面错误时会引发 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

【问题讨论】:

    标签: asp.net ajax asp.net-ajax updatepanel


    【解决方案1】:

    通过在 ScriptManager 上设置 AllowCustomErrorsRedirect="false" 可以明确解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多