ELMAH正则表达式REMOTE_ADDR过滤器无法正常工作

时间:2016-10-10 17:53:53

标签: asp.net-mvc elmah elmah.mvc

当已知进程访问我们网站上不存在的网址时,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>

1 个答案:

答案 0 :(得分:0)

即使ELMAH电子邮件看起来像500错误,web.config确实需要404错误代码才能使过滤器正常工作。

<equal binding="HttpStatusCode" value="404" type="Int32" />

而不是

<equal binding="HttpStatusCode" value="500" type="Int32" />