Почему этот игнорируют вызов соответствующим этим запросам?
-
12-12-2019 - |
Вопрос
У меня есть локализация HttPhandler, которая работает в контексте моей папки содержимого ASP.NET MVC2 (часть того, что она делает, это компиляция файлов, которые находятся в / 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, эти звонки соответствуют контенту INGLOREROROUTE MARATE:
True {Content}/{*pathInfo} (null) (null) (null)
.
Таким образом, и поэтому не перепадуются на локализаторController и авторизациюController соответственно.
Ясно, что я не понимаю что-то о том, как предполагается использовать IGNOREROUTE, и почему этот конкретный INGUSOREROUTE соответствует этим запросам. Что мне не хватает?
Решение
не должен ваша невежество использовать Content
вместо {Content}
?
context.Routes.IgnoreRoute("Content/{*pathInfo}");
.
На данный момент {Content}
, вероятно, расширяется как переменная к ним, что делает PathInfo сопоставить все.