当已知进程访问我们网站上不存在的网址时,ELMAH会生成如下所示的异常:
System.Web.HttpException:路径'/ manager /'的控制器不是 发现或未实现IController。
而从浏览器访问该不存在的URL会生成典型的IIS 404。
无法找到资源。描述:HTTP 404.资源你 正在寻找(或其中一个依赖)可能已被删除, 更改名称,或暂时不可用。请查阅 以下网址,并确保拼写正确。
请求的网址:/ manager
我知道访问这些地址的过程是无害的,并希望停止接收从一系列IP地址生成的这些特定电子邮件。这就是我在web.config中所拥有的,但ELMAH电子邮件仍然存在。
网址过滤器似乎工作正常。
<elmah>
<security allowRemoteAccess="false" />
<errorMail from="elmah@mydomain.com" to="elmahlog@mydomain.com" async="true" smtpServer="mail.mydomain.com" smtpPort="25" useSsl="false" />
<errorFilter>
<test>
<and>
<equal binding="HttpStatusCode" value="500" type="Int32" />
<or>
<!--TrustWave scans our website with intentional bad addresses-->
<regex binding="Context.Request.ServerVariables['REMOTE_ADDR']" pattern="64.37.231.\d{1,3}" type="String" />
<!--Google looking for Digital Asset Links - well known statements the website wants to make-->
<regex binding="Context.Request.ServerVariables['URL']" pattern="/.well-known/assetlinks.json" type="String" />
<!--Apple devices searching for universal links - app-site association. we dont have an app.-->
<regex binding="Context.Request.ServerVariables['URL']" pattern="/.well-known/apple-app-site-association" type="String" />
</or>
</and>
</test>
</errorFilter>
</elmah>
答案 0 :(得分:0)
即使ELMAH电子邮件看起来像500错误,web.config确实需要404错误代码才能使过滤器正常工作。
<equal binding="HttpStatusCode" value="404" type="Int32" />
而不是
<equal binding="HttpStatusCode" value="500" type="Int32" />