Маршрутизация ASP.NET в производственной среде

Я зарегистрировал пользовательский маршрут asp.net в RouteTable.Routes.

routes.MapPageRoute(
            "View Service",                    
            "home/services/{*ServiceName}", 
            "~/home/displayservice.aspx"   
        );

В моем приложении используется система маршрутизации ASP.NET 4.0, и все работает нормально на машине разработки, когда я запускаю веб-сайт из Visual Studio для отладки.

Когда я перемещаю сайт в IIS7, маршрутизация не происходит при переходе на

http://new.komplus.ua/home/services/viruses/antivirus/

или любой другой путь, который должен обрабатываться системой маршрутизации. В результате я получаю с сервера ошибку 404.

Я уверен, что скопировал global.asax и /home/displayservice.aspx на веб-сервер и перезапустил веб-сайт и пул приложений после обновления, но маршрутизация по-прежнему не выполняется.

Другие страницы без маршрутизации загружаются нормально.

Есть ли какая-то конкретная конфигурация IIS, которая должна быть выполнена для работы маршрутизации ASP.NET 4, по сравнению со средой отладки VS2010?


person Maxim V. Pavlov    schedule 04.10.2011    source источник


Ответы (1)


Чтобы маршрутизация ASP.NET 4.0 работала в IIS7, требуется, чтобы в файле web.config был отключен элемент webServer. Например:

<system.webServer>     
  <modules runAllManagedModulesForAllRequests="true">     
   </modules>     
</system.webServer> 

Это не является требованием в среде Visual Studio, где маршрутизация выполняется даже без этой директивы в web.config.

person Maxim V. Pavlov    schedule 05.10.2011