Предотвращение сообщений об ошибках HealthMonitoring для опасных Request.Path - PullRequest
6 голосов
/ 11 февраля 2012

В настоящее время у меня реализован мониторинг здоровья для общедоступного веб-сайта.Я использую SimpleMailWebEventProvider для отправки электронных писем при возникновении ошибок.«Все ошибки».

Я надеюсь, что кто-то, имеющий опыт работы с этим, сможет показать мне простой способ предотвратить отправку электронных писем в случае «Потенциально опасного значения Request.Path было обнаружено изклиент (:) "Я вижу эти ошибки и могу сказать, что они происходят от бота, а не от человека, по времени (все сразу) и по запрашиваемому URL

пример:

Request path: /Scripts/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g

Мне нравится тот факт, что .Net выдает ошибку в этих случаях, но эти электронные письма составляют, вероятно, 90% всех электронных писем с мониторингом здоровья, которые я получаю.Прочитать все из них, чтобы найти сообщения об ошибках, указывающие на проблему с кодом на веб-сайте, - это хлопотно.

Я бы хотел избежать создания своего собственного MailEventProvider, хотя раньше это было, но я считаю, что в конечном итогеиспользовать ILSpy для создания своего, поскольку SimpleMailWebEventProvider запечатан.

1 Ответ

9 голосов
/ 14 февраля 2012

Чтобы отфильтровать исключения, вызванные роботами, я обычно вызываю Server.ClearError () в обработчике Application_Error в Global.asax, это предотвращает обработку необработанных исключений при мониторинге состояния. Однако если вы используете мониторинг работоспособности с журналом событий, это также предотвратит появление ошибок в журнале событий.

void Application_Error(object sender, EventArgs e)
{
    var exception = Server.GetLastError();
    if (exception is HttpException && exception.Message.Contains("A potentially dangerous Request.Path value was detected from the client"))
    {
        Server.ClearError();
    }
}

В реальном приложении, я думаю, имеет смысл использовать некоторые дополнительные условия, чтобы гарантировать, что ошибка происходит от робота, например, с учетом IP-адреса, URL и т. Д.

...