一个被[WebMethod]注释的静态方法在aspx页面上的默认行为是将错误返回给调用者。我们使用json访问这些方法,找到的捕获异常的唯一方法是在站点上每个webmethod中使用try/catch或使用带有错误的javascript回调(这样做的不可接受的缺点是将错误暴露给客户端)。是否有任何方法可以使用ASP.NET中的HealthMonitoring设置全局处理这些异常?
我不清楚健康监测,但通常我会有一个通用的包装器,在其中执行端点代码。这将记录真实的异常,但总是在边界处抛出通用异常。
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;
}
}