在web.config中为ELMAH指定过滤器

时间:2012-07-06 21:02:03

标签: elmah

我有兴趣在我的asp.net应用程序中出现这两个异常中的任何一个时为ELMAH指定过滤器。

  1. 异常消息包含“这是无效的网络资源请求”
  2. 异常消息包含'潜在危险......价值......'
  3. 我在我的web.config中使用了以下内容,但它只过滤了无效的websresource请求,如果它被放置为第一个过滤器,但如果它被放置为第二个过滤器,则它不适用。配置文件'errorfilter'元素如下所示。如何在Web配置中指定这两个条件,是否需要使用BaseException.Message或Exception.Message?

        <errorFilter>
        <test>
         <or>
           <and>
            <regex binding="Exception.Message" pattern="(?ix: \b potentially \b.+?\b  
                dangerous \b.+?\b value \b.+?\b detected \b.+?\b client \b )" />
          </and>  
        </or>
        <or>
          <and>
              <equal binding="BaseException.Message" value="This is an invalid webresource
              request." type="String" />
          </and>
        </or>
        </test>   
        </errorFilter>
    

1 个答案:

答案 0 :(得分:2)

test元素只能有一个子元素。由于您下面有两个or条件,因此只会应用第一个条件。 这两个条件的正确方法是将它们分组到or下的test元素下,如下所示:

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