2012-04-12 8 views
2

特定のエラーメッセージの通知を停止するために、web.configにElmahフィルタ設定があります。しかし、彼らはまだ来るようです。何が原因だろうか?Elmah errorfilter

<httpModules> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
    <add name="SecuritySwitch" type="SecuritySwitch.SecuritySwitchModule, SecuritySwitch" /> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
</httpModules> 

<errorFilter> 
    <test> 
    <regex binding="Exception.Message" pattern="(?ix: \b This \b.+?\b is \b.+?\b an \b.+?\b invalid \b.+?\b webresource \b.+?\b request \b)" /> 
    </test> 
    <test> 
    <regex binding="Exception.Message" pattern="(?ix: \b Path \b.+?\b eurl.axd \b)" /> 
    </test> 
    <test> 
    <regex binding="Exception.Message" pattern="(?ix: \b potentially \b.+?\b dangerous \b.+?\b value \b.+?\b detected \b.+?\b client \b)" /> 
    </test> 
</errorFilter> 

答えて

12

私はあなたが1つだけのテスト要素を持つことができると信じています。鍵は<or></or>要素で始まり、その中にフィルターを入れ子にすることです。これは確かに私たちのために働く。ここ

<errorFilter> 
    <test> 
     <or> 
      <!-- Don't email 404 errors --> 
      <and> 
       <equal binding="HttpStatusCode" value="404" type="Int32" /> 
       <regex binding="FilterSourceType.Name" pattern="mail" /> 
      </and> 
      <!-- Don't log cancelled downloads --> 
      <and> 
       <equal binding="HttpStatusCode" value="500" type="Int32" /> 
       <equal binding="Context.Request.ServerVariables['URL']" value="/Download.aspx" type="String" /> 
       <or> 
        <regex binding="BaseException.Message" pattern="0x80070016" caseSensitive="false" /> 
        <regex binding="BaseException.Message" pattern="0x800704CD" caseSensitive="false" /> 
       </or> 
      </and> 
      <!--Viewstate Corruption--> 
      <or> 
       <regex binding="Exception" type="System.Web.HttpException" pattern="System.FormatException: Invalid length for a Base-64 char array." caseSensitive="false" /> 
       <regex binding="Exception" type="System.Web.HttpException" pattern="System.FormatException: Invalid character in a Base-64 string." caseSensitive="false" /> 
      </or> 
      <!-- IE8 Bug --> 
      <and> 
       <regex binding="Context.Request.ServerVariables['HTTP_USER_AGENT']" pattern="Trident\/4\.0" /> 
       <or> 
        <equal binding="Context.Request.ServerVariables['URL']" value="/ScriptResource.axd" type="String" /> 
        <equal binding="Context.Request.ServerVariables['URL']" value="/WebResource.axd" type="String" /> 
       </or> 
      </and> 
     </or> 
    </test> 
</errorFilter> 

詳細情報:

http://www.diaryofaninja.com/blog/2011/09/20/adding-filters-to-your-elmah-installation