كيف يمكنني استخدام تأكيد JScript لتصفية أنواع الاستثناء في المحة 1.1 RC؟
-
06-09-2019 - |
سؤال
أول ملزمة مقابل 404 يعمل حتى حصلت على ErrorFilterModule بشكل صحيح، ولكن لا يبدو أن قسم JScript يعمل على الإطلاق. لا يزال httpreceestvalidationExceptionException في إرسال بريد التقارير.
<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>
)، تحتاج إلى إخبار المحة بأي منها أو أو معهم. الحل هو استخدام <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>
تم إهمال واحد.
لا تنتمي إلى StackOverflow