Настройка приложения IIS 7 & ASP.NET для маршрутизации URL - PullRequest
3 голосов
/ 09 февраля 2010

Это не тема MVC. У меня есть приложение ASP.NET, которое выполняет маршрутизацию URL в методе Application_Start.

Маршрут выглядит так:

RouteTable.Routes.Add(new Route(
  "Profile/{query}",
  new RouteValueDictionary() { {"query",string.Empty} },
  new GenericRouteHandler("~/ProfileHttpHandler.ashx")
));

A GenericRouteHandler выглядит орудий GetHttpHandler с:

var page= (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(_virtualPath, typeof(IHttpHandler));
...
return page;

А ProfileHttpHandler.ashx - это просто шаблон Visual Studio. Он устанавливает Content-type на «text / plain» и пишет «hello world».

Это приложение работает правильно при отладке в Visual Studio (на сервере разработки ASP.NET). GET http://localhost:59474/Profile/abc123 маршрутизирует к обработчику http, как и ожидалось.

Однако, когда это приложение публикуется на удаленном компьютере с IIS 7 в режиме Integrated Pipeline, процесс завершается ошибкой. Я получаю ошибки HTTP 500 при попытке получить что-нибудь в папке приложений, включая Default.aspx.

Web.Config настроен так:

<system.web>
  <httpModules>
    <add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </httpModules>
</system.web>
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </modules>
</system.webServer>

Наконец; Я не уверен, является ли это актуальной информацией. В панели управления моего веб-провайдера у меня есть каталог, в котором находится это приложение, настроенный как виртуальный каталог. Имеет свойства:

  • mydomain.ca / routeapp: папка в вашем хостинг-пространстве (domain.ca \ wwwroot \ routeapp)
  • Разрешить анонимный доступ: вкл.
  • Включить встроенную проверку подлинности Windows: включено.
  • Включить базовую аутентификацию: включено.
  • ASP: отключено.
  • ASP.NET: интегрированный конвейер 2.0.
  • PHP: отключено.
  • Perl: включено.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Вы можете попытаться добавить это в свой файл web.config

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>

Дополнительную информацию см. В теме форума iis .

.
1 голос
/ 07 декабря 2010

Чтобы настроить веб-сайт ASP.NET или веб-приложение для маршрутизации, сначала необходимо добавить ссылку на сборку System.Web.Routing. Установка SP1 для .NET Framework 3.5 установит эту сборку в глобальную сборку кэша, и вы можете найти сборку в стандартном диалоговом окне «Добавить ссылку».

Проверьте эту ссылку

...