aspx 页面上的 [WebMethod] 属性静态方法的默认行为是将错误返回给调用者。我们正在使用 json 访问这些方法,我们发现捕获异常的唯一方法是在站点上的每个 webmethod 中使用 try/catch 或使用带有错误的 javascript 回调(这具有将错误暴露给客户)。
有没有办法使用 ASP.NET 中的 HealthMonitoring 设置来全局处理这些异常?
aspx 页面上的 [WebMethod] 属性静态方法的默认行为是将错误返回给调用者。我们正在使用 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;
}
}