У меня есть приложение MVC с дополнительным приложением, запускающим другой проект MVC в IIS. Оба используют одну и ту же оболочку версии и запускаются в отдельных пулах приложений.
Моя проблема заключается в том, что я не могу заставить вспомогательное приложение работать внутри этой виртуальной папки приложения корневого сайта. Я получаю 403.14 Запрещенную ошибку. Если я включу список каталогов в дополнительном приложении, я просто получаю список файлов приложений MVC.
Я думаю, я сузил проблему до маршрутизации; Дополнительное приложение имеет настраиваемый универсальный маршрут, который обрабатывает все запросы на сайт, его приложение CMS. Других маршрутов не зарегистрировано. Вот код для моего пользовательского маршрута:
RouteTable.Routes.Insert(0,new CmsRoute(
"{*path}",
new RouteValueDictionary(new
{
controller = "Page",
action = "Index"
}),
new MvcRouteHandler()));
Запуск этого приложения за пределами основного корневого приложения на его собственном сайте, он отлично работает, и все запросы обрабатываются моим пользовательским маршрутом. Но как только я попробую запустить это как вспомогательное приложение, обработчик маршрута никогда не попадает. Если я добавлю стандартный стандартный MVC-маршрут, который выходит из коробки:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Затем MVC запускается и пытается найти маршрут соответствия для запроса.
Итак, мой вопрос в том, почему мой общий маршрут не будет работать во время работы в подпрограмме в IIS?
Примечание. Я пробовал префикс url в моем настраиваемом маршруте с именем папки виртуального приложения, но он все еще не работает, например:
RouteTable.Routes.Insert(0,new CmsRoute(
"subapplication/{*path}",
new RouteValueDictionary(new
{
controller = "Page",
action = "Index"
}),
new MvcRouteHandler()));