全局处理ASP.NET中静态aspx [WebMethods]中的异常

时间:2011-03-16 17:07:07

标签: asp.net exception-handling webmethod pagemethods health-monitoring

aspx页面上[WebMethod]归因静态方法的默认行为是将错误返回给调用者。我们使用json访问这些方法,我们发现捕获异常的唯一方法是在网站上的每个web方法中使用try / catch,或者使用带有错误的javascript回调(这具有将错误暴露给错误的不可接受的缺点)客户端)。

有没有办法使用ASP.NET中的HealthMonitoring设置全局处理这些异常?

1 个答案:

答案 0 :(得分:0)

我不了解健康监控,但我通常有一个通用的包装器来执行内部的端点代码。这记录了真正的异常,但总是在边界上抛出一个通用异常。

public static T wrapAjaxRequestsToCatchException<T>(Func<T> wrappedDelegate) where T : JsonBase, new()
    {
        try
        {
            return wrappedDelegate();
        }
        catch (Exception ex)
        {
            var errResponse = new T()
            {
                Success = false,
                Message = getErrorMessage(ex)
            };
            // Log the exception
            ErrorLog.LogAjaxEvent(string.Format("AJAX EXCEPTION : {0}", ex.ToString()), System.Diagnostics.EventLogEntryType.Error);
            return errResponse;
        }
    }