سؤال

لدي معالج http للترجمة يعمل في سياق مجلد محتوى ASP.Net MVC2 الخاص بي (جزء مما يفعله هو تجميع ملفات .less الموجودة في /Content/css).يبدو المسار الافتراضي لهذه المجموعة المعينة من الطلبات كما يلي:

context.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

context.MapRoute(
    "Area_default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new { controller = new VirtualDirectoryConstraint("VDirectory1") },
    new string[] { "Namespace.One.MVC" }
);

(جانبًا - لا أعتقد أنه ذو صلة، ولكن فقط في حالة - يرفض VirtualDirectoryConstraint التطابقات على هذا المسار إذا لم يكن الطلب قادمًا من مسار التطبيق/الدليل الظاهري الذي تم تمريره)

مع هذا التكوين دعوة ل http://server.net/VDirectory1/Content/css/LessCompiler.axd فشل لأنه لا توجد فئة ContentController.كل شيء جيد وجيد.

عندما أقوم بإضافة

context.Routes.IgnoreRoute("{Content}/{*pathInfo}");

نجحت هذه المكالمة، ولكن تم إجراء مكالمات لاحقة

http://server.net/VDirectory1/Localization/ClientScript/en-US.js

و

http://server.net/VDirectory1/Authorization/ClientScript

يفشل.بالنظر إلى أداة RouteDebugger الخاصة بـ Phil Haack، فإن تلك الاستدعاءات تتطابق مع مسار Content IgnoreRoute:

True    {Content}/{*pathInfo}   (null)  (null)  (null)

وبالتالي لا يتم توجيهها إلى LocalizationController وAuthorizationController، على التوالي.

من الواضح أنني أسيء فهم شيء ما حول كيفية استخدام IgnoreRoute ولماذا يتطابق IgnoreRoute المعين مع تلك الطلبات.ماذا ينقصني؟

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

المحلول

لا ينبغي استخدام IgnoreRoute الخاص بك Content بدلاً من {Content} ?

context.Routes.IgnoreRoute("Content/{*pathInfo}");

في اللحظة، {Content} من المحتمل أن يتم توسيعه كمتغير إلى لا شيء، مما يجعل معلومات المسار تتطابق مع كل شيء.

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