Я совершенно уверен, что в вашем случае проблема в настройке UrlRoutingModule
. Если вы посмотрите на «Настройка модулей IIS» в упорядоченном виде, то увидите, что UrlRoutingModule
расположен выше, чем Rewrite
и ApplicationRequestRouting
. Это означает, что если в вашем приложении есть Route-setup для ASP.NET MVC. Эта настройка будет влиять на запросы, поступающие на сервер, перехватывая их и перенаправляя их в MVC-Route-Handlers, не позволяя обратному прокси-серверу выполнять свою работу. Например, если у вас есть общие настройки маршрута, такие как:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
В вашем случае /community/qa/
и /community/qa/questions/
не будут работать, потому что они будут соответствовать заданному шаблону URL и будут интерпретированы как:
/ сообщество / qa / ---> Controller = " сообщество ", Action = " qa"
/ сообщество / qa / вопросы / ---> Controller = " сообщество ", Действие = " qa ", параметр: Id = " questions "
Если у вас нет таких контроллеров и действий, вы получите Http 404 Not Found.
/community/qa/questions/ask/
и /community/qa/questions/unanswered/
будут работать, потому что они не соответствуют ни одному шаблону UrlRouting в вашей системе.
Столь простое решение - добавить в конфигурацию UrlRouting (при запуске веб-приложения) правило игнорирования для вашего URL:
routes.IgnoreRoute("community/qa/{*pathInfo}");