Comment puis-je utiliser JScript Assertion pour filtrer les types d'exceptions dans Elmah 1.1 RC?

StackOverflow https://stackoverflow.com/questions/931130

Question

La première liaison contre 404 fonctionne, j'ai donc correctement configuré la section ErrorFilTerModule, mais la section JScript ne semble pas fonctionner du tout. HttpRequestValidationException est toujours en cours d'envoi dans le courrier du rapport.

<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>
Était-ce utile?

La solution

Lorsque vous avez plus d'une condition, la façon dont vous l'avez dans votre exemple (<equal> alors <jscript>), vous devez dire à Elmah à Elmah et à eux ou à eux. La solution consiste à utiliser <and> ou <or>, selon la façon dont vous souhaitez combiner logiquement les conditions. Ci-dessous, j'ai ou à Ed les deux afin que la condition puisse s'appliquer:

<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>

Lorsque vous avez plusieurs conditions directement sous <test> sans logique (<and> ou <or>) combinaison alors seule la première est utilisée, c'est pourquoi <jscript> L'un était négligé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top