我目前为一个面向公众的网站实现了健康监测。我正在使用 SimpleMailWebEventProvider 在发生错误时发送电子邮件。 “所有错误”。
我希望有这方面经验的人能够告诉我一个简单的方法来防止在以下情况下发送电子邮件 “从客户端检测到潜在危险的 Request.Path 值 (:)” 我可以看到这些错误,并且可以通过它们的时间(一次全部)和请求的 url 判断它们来自机器人而不是人类
例子:
请求路径:/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 是密封的。
最佳答案
为了过滤由机器人引起的异常,我通常在 Global.asax 的 Application_Error 处理程序中调用 Server.ClearError(),这样可以防止健康监控处理未处理的异常。但是,如果您对事件日志使用健康监控,这也将防止错误出现在事件日志中。
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 等。
关于c# - 防止危险 Request.Path 的 HealthMonitoring 错误电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237653/