كشف الدلائل الظاهرية المعينة من IHTTPModule في تطبيق AC # .NET

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

سؤال

لدي موقع .NET الذي يحتوي على IHTTPModule كتبت للقيام بمهام معينة (إذن وما إلى ذلك). ولكن داخل الموقع هناك عدد من الدلائل الافتراضية التي يتم تعيينها لتطبيقات طرف ثالث للأسف لا يمكنني تغيير أو نقل (مثل منتديات خادم المجتمع، ADXSTODIO CMS وغيرها).

أبحث عن طريقة لمنع تشغيل IHTTPModule من تشغيل عندما يتم تقديم الطلبات لمحتويات هذه الدلائل الافتراضية. هل هذا ممكن؟

تحرير - إضافة ما يلي

لقد كنت تجريب مع إضافة <remove name="X"/> داخل <httpModules> العقدة في ملفات Web.config في تطبيقات الدليل الظاهري ولكن لا يبدو أنه يعمل. ربما ليس حلا كبيرا أيضا لأن تطبيقات الطرف الثالث يمكن تحديثها لذلك لا أريد أن أطلب تغييرات على رمز / تكوينها.

حاولت أيضا إضافة <location path="." inheritInChildApplications="false"> حول بلدي <system.web> العقدة في web.config الأصل ولكن هذا أيضا لا يبدو أن العمل.

عددا مرة أخرى - إضافة المزيد

السبب لا يعمل لأن حدث IHTTPModule الخاص بنظام IHTTPModule يتم إطلاقه مرة واحدة فقط لكل دورة في دورة حياة التطبيق (بدلا من لكل طلب كما افترضت). نظرا لأنني أضيف مجموعة من المستمعين في الحدث في حدث INIT، فلا تزال تطلق النار على طلبات لاحقة ...

هل كانت مفيدة؟

المحلول

إذا كانت لديك قائمة بهذه الدلائل ومساراتها الافتراضية، فيمكنك بناء بحث منهم.

لكل HTTPREQUEST الذي يؤدي إلى تشغيل الوحدة النمطية الخاصة بك، يمكنك التحقق من المسار الظاهري لمعرفة ما إذا كان ينتمي إلى أي من المسار في البحث. إذا كانت الإجابة بنعم، فيمكنك بعد ذلك عدم القيام بأي شيء أو إنهاء رمز الوحدة النمطية.

ملاحظة: بالنسبة لقضية الأداء، ربما ترغب في تخزين البحث في حالة التطبيق (مثل Hashmap، إلخ)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top