javascript - 如何使用 jscript 断言来过滤 Elmah 1.1 RC 中的异常类型?

标签 javascript exception filter elmah

针对 404 的第一个绑定(bind)有效,因此我正确设置了 ErrorFilterModule,但 jscript 部分似乎根本不起作用。 HttpRequestValidationException 仍在报告邮件中发送。

<errorFilter>
  <test>
    <equal binding="HttpStatusCode" value="404" type="Int32" />
    <jscript>
      <![CDATA[
            // @assembly mscorlib
            // @assembly System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
            // @import System.IO
            // @import System.Web

            HttpStatusCode == 404
            || BaseException instanceof FileNotFoundException 
            || BaseException instanceof HttpRequestValidationException
            || BaseException instanceof HttpException
            /* Using RegExp below (see http://msdn.microsoft.com/en-us/library/h6e2eb7w.aspx) */
            || Context.Request.UserAgent.match(/crawler/i)
            || Context.Request.ServerVariables['REMOTE_ADDR'] == '127.0.0.1' // IPv4 only
            ]]>
    </jscript>
  </test>
</errorFilter>

最佳答案

当您有多个条件时,就像您的示例中那样( <equal> 然后 <jscript> ),您需要告诉 ELMAH 与它们或或它们。解决方案是使用 <and><or> ,取决于您想要如何逻辑地组合条件。下面,我对两者进行了“或”运算,因此任一条件都适用:

<errorFilter>
  <test>
    <or>
        <equal binding="HttpStatusCode" value="404" type="Int32" />
        <jscript>
          <expression><![CDATA[
                // @assembly mscorlib
                // @assembly System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
                // @import System.IO
                // @import System.Web

                HttpStatusCode == 404
                || BaseException instanceof FileNotFoundException 
                || BaseException instanceof HttpRequestValidationException
                || BaseException instanceof HttpException
                /* Using RegExp below (see http://msdn.microsoft.com/en-us/library/h6e2eb7w.aspx) */
                || Context.Request.UserAgent.match(/crawler/i)
                || Context.Request.ServerVariables['REMOTE_ADDR'] == '127.0.0.1' // IPv4 only
          ]]></expression>
        </jscript>
    </or>
  </test>
</errorFilter>

当您在 <test> 下有多个条件时如果没有逻辑( <and><or> )组合,则仅使用第一个组合,这就是为什么您的 <jscript>其中一个被忽视了。

关于javascript - 如何使用 jscript 断言来过滤 Elmah 1.1 RC 中的异常类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931130/

相关文章:

javascript - 如何检索自定义 DOM 属性的值?

javascript - 搜索在动态 Bootstrap 多选中不起作用

.net - .NET 是否有类似于 Delphi 的 EAbort 的异常?

javascript - 过滤 Google 开发工具中“网络”选项卡中显示的文件

javascript - 验证输入后提交表单

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

Java 编译时检查异常

angularjs - 使用 TypeScript 创建自定义 Angular 过滤器

regex - Google Analytics(分析)过滤掉文件扩展名

javascript - 从 parse.com 查询的 javascript 对象获取数据