توجيه ASP.NET MVC والبيانات الثابتة (أي الصور ، البرامج النصية ، إلخ)

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

سؤال

إذا كان لدي طلب للحصول على مورد في تطبيق الويب الخاص بي ASP.NET MVC1 (أو 2) للحصول على مورد ثابت ، قل ... صورة أو ملف JavaScript أو ملف CSS ... هل محاولة .NET Framework إذا كان الطلب يتطابق مع قائمة المسار ... وفي النهاية لا يمكنك العثور على وحدة تحكم لذلك؟

على سبيل المثال.

المورد: /content/images/foo.png

هل يمر هذا الطلب من خلال قائمة طريقي .. فشل في مطابقة أي وحدات تحكم / إجراءات لهذا الطلب ثم محاولة هذا المسار مباشرة؟

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

المحلول

يمكنك اختيار ما إذا كنت تريد تعيين ملف موجود أو عدم تعيين ملف RouteCollection.RouteExistingFiles ملكية

يحصل أو يحدد قيمة تشير إلى ما إذا كان يجب على توجيه ASP.NET التعامل مع عناوين URL التي تتطابق مع ملف موجود.

هذا ما قرأته من هنا:

ومع ذلك ، لا يزال نظام التوجيه يتحقق من نظام الملفات لمعرفة ما إذا كان عنوان URL الواردة يتطابق مع ملف أو قرص ، وإذا كان الأمر كذلك ، فإن التوجيه يتجاهل الطلب (تجاوز أي إدخالات مسار قد يتطابق معها عنوان URL) بحيث يتم تطابق الملف) يتم تقديمها مباشرة. هذا مريح للغاية للملفات الثابتة ، مثل الصور و CSS وملفات JavaScript. يمكنك الاحتفاظ بها في مشروعك (على سبيل المثال ، في مجلداتك /المحتوى أو /البرنامج النصي) ، ثم المرجع إليها وخدمتها مباشرة ، كما لو كنت لا تستخدم التوجيه على الإطلاق. نظرًا لأن الملف موجود حقًا على القرص ، فإن ذلك يأخذ الأولوية على تكوين التوجيه الخاص بك.

إذا كنت تريد ، بدلاً من ذلك ، أن يأخذ تكوين التوجيه الأولوية على الملفات على القرص ، يمكنك تعيين خاصية RouteCollection's RouteExistingFiles إلى True. (هذا خطأ بشكل افتراضي.)

نصائح أخرى

بشكل افتراضي ، سيتجاهل محرك التوجيه خرائط الطريق لجميع الملفات الموجودة جسديًا على الخادم. باختصار ، تحتاج إلى عدم القيام بأي شيء لتطبيق MVC للربط بالملفات الثابتة.

يمكنك أيضًا القيام ببعض الخدعة في IIS. أقوم بتخزين JS والصور و CSS وما إلى ذلك في مجلد المحتوى أسفل الدليل الظاهري.

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

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