c# - 防止危险 Request.Path 的 HealthMonitoring 错误电子邮件

标签 c# asp.net url web-config health-monitoring

我目前为一个面向公众的网站实现了健康监测。我正在使用 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/

相关文章:

android - 在 Twitter 上允许该应用程序后未找到 Oauth 回调

java - Android中的加密字符串

c# - 为什么我不能等待异步方法?

c# - 如何将组件的大小链接到窗口大小?

c# - 如何使用服务器端将数据发布到 MVC4 中的外部 URL

Javascript 或 Jquery - 在复选框单击时,如何更改父元素的背景颜色?

c# - Page.IsValid 检查内部结构?

c# - 为什么我不能从 C# 中的子类访问 protected 方法?

c# - Unity 的 Input.acceleration 是什么单位?

html - Netlify 删除 url slug 上的 .html