Глобальная обработка исключений в статическом aspx [WebMethods] в ASP.NET - PullRequest
4 голосов
/ 16 марта 2011

Поведение по умолчанию атрибутного статического метода [WebMethod] на странице aspx - возвращать ошибку вызывающей стороне. Мы обращаемся к этим методам с помощью json, и единственный найденный нами способ захвата исключений - это либо попытка / уловка в каждом веб-методе на сайте, либо использование обратного вызова javascript с ошибкой (что имеет неприемлемую обратную сторону для сообщения об ошибке клиент).

Есть ли способ глобальной обработки этих исключений с помощью настройки HealthMonitoring в ASP.NET?

1 Ответ

0 голосов
/ 22 марта 2011

Я не знаю о мониторинге работоспособности, но у меня обычно есть универсальная оболочка, которая выполняет код конечной точки внутри. Это записывает реальное исключение, но всегда генерирует общее исключение через границу.

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;
        }
    }
...