Wie kann ich die Jscript -Behauptung verwenden, um Ausnahmetypen in Elmah 1.1 RC zu filtern?
-
06-09-2019 - |
Frage
Die erste Bindung gegen 404 funktioniert, so dass ich das Fehlerfiltermodul ordnungsgemäß eingerichtet habe, aber der Jscript -Abschnitt scheint überhaupt nicht zu funktionieren. HttprequestValidationException wird immer noch in die Berichts Mail gesendet.
<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>
Lösung
Wenn Sie mehr als eine Bedingung haben, wie Sie es in Ihrem Beispiel haben (<equal>
dann <jscript>
), Sie müssen Elmah entweder und ihnen oder oder ihnen sagen. Die Lösung ist zu verwenden <and>
oder <or>
, je nachdem, wie Sie die Bedingungen logisch kombinieren möchten. Im Folgenden habe ich die beiden oder entweder die Bedingung gelten:
<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>
Wenn Sie mehrere Bedingungen direkt unter haben <test>
ohne logisch (<and>
oder <or>
) Kombination dann wird nur die erste verwendet, weshalb Sie Ihre <jscript>
Man wurde vernachlässigt.