在异步回发中获取.NET异常

时间:2009-08-18 13:01:42

标签: asp.net exception-handling asynchronous postback

我有一个位于UpdatePanel内的GridView。我正在使用RowCommand事件来插入数据,但是当前如果抛出异常,它就不会像我想要的那样写入跟踪。有没有办法在使用异步回发时输出异常消息?

3 个答案:

答案 0 :(得分:3)

在异步回发期间,异常不会发送到客户端,而是ASP.NET ajax机制处理错误。每当服务器端发生未处理的异常时,将向包含异常消息的用户显示alert消息框。要以自己的方式处理它,您可以点击这样的PageManager's EndRequest事件 -

Sys.Application.add_init(__AppInit);
var __pageManager;

function __AppInit() {
    __pageManager = Sys.WebForms.PageRequestManager.getInstance();
    __pageManager.add_endRequest(__EndRequest);
}

function __EndRequest(sender, args) {
    var error = args.get_error();

    if (null != error) {
        args.set_errorHandled(false);
    }
}

更多参考文献herehere

答案 1 :(得分:3)

我之前一直在努力解决这个问题。如果在ScriptManager标记中关闭了部分页面渲染,

<asp:ScriptManager runat="server" id="ScriptManager"  
EnablePartialRendering="false" />   

然后您应该看到ASP.NET YSOD,它可以让您诊断问题。修复后,将部分渲染重新打开。

答案 2 :(得分:-1)

在try catch中包装正在运行异步代码的方法,将错误写入catch中的跟踪。

如果没有访问代码,那么您是否正在处理正确的Gridview事件?例如,如果你有一个带有删除命令的按钮,但是正在处理GridViewCommand中的代码并且不处理事件GridViewDeleted,则会抛出异常。