Фильтр REMOTE_ADDR регулярных выражений ELMAH не работает

#asp.net-mvc #elmah #elmah.mvc

#asp.net-mvc #elmah #elmah.mvc

Вопрос:

ELMAH генерирует исключение, подобное приведенному ниже, когда известный процесс посещает несуществующий URL-адрес на нашем веб-сайте:

System.Web.HttpException: контроллер для пути ‘/ manager/’ не найден или не реализует IController.

В то время как переход к этому несуществующему URL-адресу из браузера генерирует типичный IIS 404.

Ресурс не может быть найден. Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, его имя было изменено или временно недоступен. Пожалуйста, просмотрите следующий URL-адрес и убедитесь, что он написан правильно.

Запрошенный URL: /manager

Я знаю, что процесс доступа к этим адресам безвреден, и хочу прекратить получать эти конкретные электронные письма, генерируемые с диапазона IP-адресов. Это то, что у меня есть в web.config, но электронная почта ELMAH все еще приходит.

Фильтр URL, похоже, работает нормально.

       <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:

Несмотря на то, что сообщение электронной почты ELMAH выглядит как ошибка 500, web.config действительно нуждался в коде ошибки 404 для работы фильтра.

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

вместо

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