Как отловить ошибки AJAX WebMethod в global.asax? - PullRequest
4 голосов
/ 29 июня 2011

Я использую обычную практику отлова ошибок в global.asax в моем приложении ASP.net.В global.asax у меня есть функция Application_Error, которая регистрирует ошибки в базе данных.

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

Однако,это не помогает, когда асинхронный метод (метод, украшенный атрибутом [WebMethod]), вызываемый со стороны клиента, генерирует исключение.Исключение просто всплывает и может быть возвращено в код на стороне клиента, но я хотел бы, чтобы код обработки ошибок выполнялся на сервере автоматически, подобно тому, как регистрируются ошибки страницы в global.asax.

Какмне сделать это?Одним из способов было бы обернуть каждый асинхронный метод с помощью try-catch, но это не кажется мне хорошим решением.

Ответы [ 2 ]

0 голосов
/ 18 июня 2018

Один из вариантов - создать выходной фильтр ASP.NET , который перехватывает и регистрирует исключения WebMethod, отправленные ASP.NET клиенту.Вот основная идея:

  1. Создать подкласс Stream, который захватывает содержимое ответа.
  2. Когда поток закрыт, проверьте, имеет ли ответ также код состояния 500как заголовок "jsonerror: true".Если это так, ответ содержит исключение WebMethod;Записать исключение.
0 голосов
...