2010-04-27 9 views
2

Мне нужно разработать систему оповещений об ошибках, где команда поддержки веб-сайта уведомляется по электронной почте, когда пользователь нашего сайта сталкивается с какой-либо ошибкой (исключение базы данных или 404)Уведомление по электронной почте при возникновении ошибки

Что было бы лучшим способом для разработки этого раздела проекта? Любые идеи были бы хорошы.

+1

Elmah: http://code.google.com/p/elmah/, http://stackoverflow.com/questions/tagged/elmah – Greg

+0

Elmah поможет только с ошибками, возникающими в обработанных запросах ASP.NET. Например, 404 ошибки, которые обрабатываются IIS и не передаются в ASP.NET, не будут покрываться. Это верно в IIS6 и ранее, но может отличаться по интегрированным конвейерам IIS7 и IIS7.5 –

+0

@ Даниэль: Лично это единственные ошибки, о которых я забочусь, но у всех разные потребности. – Greg

ответ

2

Возможно, вы захотите изучить файл global.asax для перехвата ошибок в приложении. Быстрый поиск дает этот шаг за шагом проходных:

http://aspnetresources.com/articles/CustomErrorPages.aspx

В зависимости от объема трафика вы ожидали, посылая по электронной почте каждый раз, когда ошибка перехватывается не может быть лучшим подход. В лучшем случае вы наполнили бы почтовые ящики (и заставили бы службу поддержки очень недовольны), а в худшем случае вы получите свои почтовые серверы в черный список для рассылки спама. Подход, который я использовал в прошлом на сайтах с высоким трафиком, заключается в том, чтобы помещать в очередь ошибки в таблице, которая считывается и очищается с заданным интервалом отдельным процессом. Процесс будет агрегировать ошибки, группировать их по типу, количеству вхождений и т. Д., А затем отправлять отчет по электронной почте в списки рассылки поддержки.

1

Мониторинг состояния ASP.NET может представлять интерес: http://msdn.microsoft.com/en-us/library/ms998306.aspx. Это действительно проще в использовании, чем в первой статье, и не требует никаких дополнительных компонентов - все это встроено.

1

Я бы реализовал HTTP-модуль, который захватывает событие onError.
Это позволит модулю повторно использовать несколько приложений. Адреса электронной почты получателя, SMTP-сервер и т. Д. Могут быть в HTTP-модуле, задерживаются в файле web.config для максимальной гибкости.

Смежные вопросы