Elmah сообщает о нежелательных 404 ошибках - PullRequest
18 голосов
/ 15 января 2010

Я использую Elmah для входа в проект ASP.NET MVC и получаю много 404 ошибок для пути /prx2.php, который, в свою очередь, передает хэш в качестве параметра строки запроса.

Я предполагаю, что это сканер, пытающийся найти уязвимости. Поскольку я не использую PHP, я в безопасности! Однако я бы хотел, чтобы ELmah не сообщал об этой ошибке.

Какой лучший способ исключить эти типы ошибок из отчетов без фактического создания страницы /prx2.php. Я также хотел бы сделать это в файле конфигурации, а не делать это постепенно.

Есть идеи?

Ответы [ 2 ]

18 голосов
/ 15 января 2010

Elmah поддерживает фильтрацию ошибок - Ссылка на фильтрацию ошибок

Это должно решить проблему для вас. Вы можете определить свой фильтр с помощью кода - в файле Global.asx или в конфигурации xml для самого elmah

4 голосов
/ 19 января 2017

Шаг 1: настройка разделов конфигурации для включения раздела elmah errorFilter:

<configSections>
  <sectionGroup name="elmah">
    <!-- ... -->  
    <!-- this is the important part -->
    <section name="errorFilter" requirePermission="false" 
      type="Elmah.ErrorFilterSectionHandler, Elmah"/>
  </sectionGroup>
</configSections>

Шаг 2: Настройте сам фильтр в разделе <elmah>.

<elmah>
  <!-- ... -->
  <errorFilter>
    <test>
      <and>
        <equal binding="HttpStatusCode" value="404" type="Int32" />
        <!-- you may want to consider something more generic like pattern="/.+[.]php" -->
        <regex binding="Context.Request.Url" pattern="/prx2.php" />
      </and>
    </test>
  </errorFilter>
</elmah>    

Шаг 3: включите Elmah.ErrorFilterModule в свои модули приложения

Современная (IIS7 +) версия, включающая модуль http:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <!-- ... -->
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" 
      preCondition="managedHandler" />
  </modules>
</system.webServer>

Legacy (более старая IIS) версия, включающая модуль http:

<system.web>
  <httpModules>
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
  </httpModules>
</system.web>
...