Конфигурирование фильтрации ELMAH декларативно - PullRequest
2 голосов
/ 21 сентября 2011

Я хотел бы отфильтровать результаты ELMAH декларативно в моем web.config.Я не получаю это, чтобы успешно отфильтровать некоторые исключения, которые я хотел бы.HttpStatusCode успешно фильтрует, но я все еще получаю исключения ViewStateException.Есть много постов о том, как его настроить, но я не уверен, как поместить несколько фильтров в раздел конфигурации, и документация кажется немного тонкой в ​​этом вопросе.В настоящее время у меня есть нижеуказанная конфигурация в моем web.config.Интересно, может кто-то указать:

  1. Если у меня есть определенные вещи, чтобы правильно отфильтровать ViewStateExceptions и
  2. Как точно определить структуру узла для правильной обработки всех фильтров.

    <errorFilter>
        <test>
            <equal binding="HttpStatusCode" value="404" type="Int32" />
        <test>
        <test>
            <and>
                <is-type binding="Exception" type="System.Web.HttpException" />
                <regex binding='Exception.Message' pattern='invalid\s+viewstate' caseSensitive='false' />
            </and>
        </test>
        <test>
            <and>
                <is-type binding="Exception" type="System.Web.UI.ViewStateException" />
                <regex binding='Exception.Message' pattern='invalid\s+viewstate' caseSensitive='false' />
            </and>
        </test>
    </errorFilter>
    

1 Ответ

5 голосов
/ 11 октября 2011

В последнем тесте попробуйте связать с BaseException, а не с Exception.

Чтобы ваша структура попробовала что-то вроде:

  <test>
    <or>
       <regex binding="BaseException.Message" pattern="Request timed out."/>
       <and>
          <equal binding="Context.Request.ServerVariables['REMOTE_ADDR']" value="::1" type="String"/>
          <regex binding="Exception" pattern="hello"/>
       </and>
      <regex binding="BaseException.Message" pattern="The remote host closed the connection."/>
    </or>
  </test>

Должно работать.Оберните все тесты в <or>, затем все тесты, которые должны быть оба истинными, оберните в <and>.

...