1

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

  1. 异常消息包含“这是一个无效的网络资源请求”
  2. 异常消息包含“潜在危险...值...”

我在我的 web.config 中使用了以下内容,但如果将其放置为第一个过滤器,它只会过滤无效的 websresource 请求,但如果将其放置为第二个过滤器,则它不适用。配置文件“errorfilter”元素如下所示。如何在 web config 中同时指定这两个条件,是否需要使用 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>
4

1 回答 1

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>
于 2012-07-07T12:09:12.617 回答