在ASP.NET Ajax错误上显示友好消息

时间:2011-01-07 12:18:28

标签: asp.net asp.net-ajax error-handling

你们都知道有多烦人

alt text

我确实有一个日志系统,并且正确的错误在那里很明确,但我想向用户提供更好的信息。

我一直在尝试几种方法,但我正在使用Telerik组件和jQuery,我最终使用了ASP.NET Ajax方法和jQuery,所以我使用

function pageLoad() {

    try {
        var manager = Sys.WebForms.PageRequestManager.getInstance();
        manager.add_endRequest(endRequest);
        manager.add_beginRequest(OnBeginRequest);
        manager
    }
    catch (err) {
        alert(err);
    }
}

以及

$(document).ready(function() { ... }

即使alert(err)次事件

OnClick也永远不会被解雇

避免此消息错误并提供更清晰方法的最佳方法是什么?

所有这一切<asp:UpdatePanel>,因为当我不知道更好(3年前!)时我会使用它,我真的不想陷入困境并重新建立所有从头开始:(

非常感谢任何帮助


volpav 解决方案

之后更新了更多错误窗口

alt text

alt text

4 个答案:

答案 0 :(得分:0)

如果我理解正确的话:

var manager = Sys.WebForms.PageRequestManager.getInstance();
manager.add_endRequest(function(sender, args) {
    var error = args.get_error();
    if(error != null && error.httpStatusCode != null) {
        // handle error
        args.set_errorHandled(true);

    }    
});

- 帕维尔

答案 1 :(得分:0)

您看到的错误并不是您可以在客户端轻松处理的错误。由于PageRequestManager无法解析响应,因此您无法处理endRequest和set_errorHandled()。

它告诉你的是,有些事情会破坏对UpdatePanel异步回发的响应。我写了很久以前的一个常见原因:http://encosia.com/2007/06/19/the-easiest-way-to-break-aspnet-ajax-pages/

正如错误消息所述,另一个常见原因是注入标记的自定义HttpModules。 GoDaddy使用(或习惯)一个在免费托管帐户上注入广告,例如,这打破了UpdatePanel。

如果您检查Firebug或Fiddler之类的响应,那么外国内容应该是显而易见的。如果不了解您的应用程序,我很难猜测它究竟是什么。

答案 2 :(得分:0)

您可以使用ScriptManager的AsynPostBackError事件来执行自定义错误处理。

答案 3 :(得分:0)

斯科特精确地解释说,在博文中,不要劫持这篇文章,而是检查它。

我使用他的方法和jQuery以及一个名为Noty的插件,通知看起来更好。

斯科特的帖子:http://weblogs.asp.net/davidbarkol/archive/2008/09/25/asynchronous-error-handling-change-in-asp-net-ajax-3-5.aspx

jQuery Noty插件:http://needim.github.io/noty/