سؤال

أنا أستخدم وحدة إعادة كتابة IIS7 الممتازة (V2) ، وأريد إنشاء إعادة كتابة مخصصة تعيد كتابة ما إذا كان الملف الفعلي موجودًا أم لا.

لقد نجحت في إنشاء مزود ، كما في هذا البرنامج التعليمي:http://learn.iis.net/page.aspx/804/devivers-a-custom-rewrite-provider-for-url-rewrite-module/

ومع ذلك ، يجب حقًا أن أكون قادرًا على تعيين عنوان URL إلى مسار مادي - عادةً ما أقوم بذلك عبر httpcontext.current.server.mappath () أو مضيفات assingenvironm. على الأقل ضمن مجال التطبيق الحالي - نظرًا لأن وحدة إعادة الكتابة هي رمز أصلي ، فأنا أواجه صعوبة في العمل حيث يمكنني الحصول على هذه المعلومات).

لا أريد حقًا أن أضطر إلى اللجوء إلى إنشاء وحدة إعادة كتابة الخاصة بي للالتفاف على هذه المشكلة - أي شخص لديه أي أدلة بالنسبة لي؟

شكرًا! علامة.

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

المحلول

لن تتمكن من الوصول إليها باستخدام واجهات برمجة التطبيقات هذه لأن الرمز يعمل في AppDomain مختلف عن ASP.NET واحد يستخدمه.

الطريقة الوحيدة التي يمكنني التفكير بها في جعل هذا العمل هو تمرير متغير الخادم الصحيح الذي يتضمن المسار الفعلي إلى امتدادك والقيام بـ path.combine () بنفسك.

لذا ، على افتراض أن لديك امتدادًا يسمى YourProvider الذي تسميه بطريقة ما مثل هذا:{yourprovder: {url}}

يمكنك ان تفعل:{yourprovder: {Appl_physical_path} | {url}}

يمكنك الآن الحصول على المسار المادي وعنوان URL مفصولة بواسطة أنبوب | ، تأكد من تمرير المسار المادي أولاً نظرًا لأن عنوان URL في التحكم في المستخدمين الخارجيين ، فأنت لا تريدهم أن يخبدوك في الحصول على مسار فعلي مختلف.

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