Работает ли мониторинг работоспособности ASP.net с веб-службами asmx?

Я пытаюсь использовать мониторинг работоспособности ASP.net для регистрации необработанных исключений из веб-службы asmx. Я включил мониторинг работоспособности в web.config, но он ничего не регистрирует. Работает ли мониторинг работоспособности с веб-службами asmx? Я гуглил и, кажется, другие люди задавали тот же вопрос, но так и не получили определенного ответа.


person hwiechers    schedule 09.10.2008    source источник


Ответы (5)


Пожалуйста, не публикуйте ответ, если он не отвечает на заданный вопрос. Половина ответов на что-то, кроме вопроса, сбивает читателя с толку. Мониторинг работоспособности не имеет ничего общего ни с «действительно необработанными» исключениями ASP.NET, ни с событием Application_Error.

Ответ - нет. Я немного покопался в этом, и по какой-то причине исключения, возникающие в веб-методах, никогда не доходят до поставщиков мониторинга работоспособности. Похоже, вы должны поймать их и справиться с собой.

person rciq    schedule 02.04.2009
comment
Ага. Большинство людей просто не знают, что такое Health Monitoring. В этой конкретной проблеме возникла проблема с Microsoft Connect, но она была закрыта как «по замыслу». connect.microsoft.com/VisualStudio/feedback/ - person Dave Neeley; 26.08.2010

Есть разница между обычной интерпретацией необработанных исключений и теми, на которые ссылается Том. Том имеет в виду действительно необработанные исключения, которые уничтожат ваш процесс w3wp.exe (до того, как он сможет его зарегистрировать), о чем я писал здесь: http://www.improve.dk/blog/2008/04/07/spawning-threads-in-aspnet-can-be-dangerous

Обычные необработанные исключения приведут к возникновению исключения и отображению страницы ошибки для пользователя/вызываемого. Однако это не приведет к сбою вашего процесса w3wp.exe. Эти исключения должны быть обнаружены мониторингом работоспособности.

person Mark S. Rasmussen    schedule 09.10.2008

В Global.asax, если вы используете автоматически сгенерированный Visual Studio, вы можете добавить код в метод Application_Error для обработки исключений и регистрации их любым способом по вашему выбору. Вы также можете переопределить метод Init и добавить обработчик событий для события Error класса.

В любом случае вы получаете только бесполезный ванильный объект EventArgs, но вы можете использовать HttpContext.Current.Server.GetLastError() для получения произошедшего исключения.

Как упоминалось в другом постере, это может не перехватывать исключения, которые выдаются асинхронно работающими делегатами, потоками, которые вы запускаете сами, или асинхронными задачами страницы, созданными с помощью Page.RegisterAsyncTask(). На них вам всегда нужно убедиться, что реализации имеют резервные копии исключений, чтобы исключения могли быть перехвачены, а рабочий процесс IIS не был прерван.

person David Boike    schedule 23.10.2008

Это не сработает, потому что необработанные исключения не запускаются внутри какой-либо попытки/поймать. Из-за этого он не сможет его зарегистрировать. Взгляните на этот пост в блоге: http://blogs.msdn.com/tom/archive/2007/12/04/unhandled-exceptions-causing-asp-net-to-crash-in-net.-2-0.aspx

person Tom    schedule 09.10.2008

в этом случае должен работать продукт CALM; дайте мне знать, если это не так - я написал это ;-)

person Steven A. Lowe    schedule 13.10.2008
comment
@frankadelic: извините за это, мы находимся в процессе переделки веб-сайта и смены хостинг-провайдеров, и все еще не работает; напишите мне по электронной почте (Стивен Дот Лоу на nov8r.com), и я вышлю вам программу установки, если вы хотите попробовать ее. - person Steven A. Lowe; 03.05.2010