IIS 7.5 маршрутизация не работает (все обычные методы проверены) - PullRequest
3 голосов
/ 13 мая 2011

У меня есть клиент, у которого есть одна веб-страница с настроенными маршрутами, добавленными в global.asax (без расширения):

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Routing.RouteTable.Routes.Clear()
Routing.RouteTable.Routes.MapPageRoute("Key1", "String", "~/Route")

К сожалению, эти перенаправления не работают на IIS 7.5. Я проверял это:

Пул в интегрированном режиме, 4.0. На этом сервере выполняется множество страниц MVC3, и по умолчанию они используют маршрутизацию.

Любой свет будет очень ценен! Спасибо

=============================================== =======================

РЕДАКТИРОВАТЬ: Хорошо, я не могу найти никакого решения.

В вебконфиге, внутри сборок:

<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

На system.webServer:

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<defaultDocument>
<files><add value="Page.aspx" /></files>
</defaultDocument>
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRoutingModule"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,System.Web.Routing,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
   </modules>



</system.webServer>

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Мое решение, после попытки ВСЕГО:

Плохое развертывание, старый PrecompiledApp.config зависал вокруг моего местоположения развертывания и заставлял все не работать.

Мойокончательные настройки, которые сработали:

  • IIS 7.5, Win2k8r2 x64,
  • Пул приложений в интегрированном режиме
  • Ничего не меняется в файле web.config - это означает отсутствие специальных обработчиков для маршрутизации.Вот мой снимок разделов, ссылки на многие другие сообщения.Я использую FluorineFX, поэтому мне добавили этот обработчик, но другие мне не нужны:

    <system.web>
      <compilation debug="true" targetFramework="4.0" />
      <authentication mode="None"/>
    
      <pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
      <httpRuntime requestPathInvalidCharacters=""/>
    
      <httpModules>
        <add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx"/>
      </httpModules>
    </system.web>
      <system.webServer>
        <!-- Modules for IIS 7.0 Integrated mode -->
        <modules>
          <add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx" />
        </modules>
    
        <!-- Disable detection of IIS 6.0 / Classic mode ASP.NET configuration -->
        <validation validateIntegratedModeConfiguration="false" />
      </system.webServer>
    
  • Global.ashx: (только метод любой заметки)

    void Application_Start(object sender, EventArgs e) {
        // Register routes...
        System.Web.Routing.Route echoRoute = new System.Web.Routing.Route(
              "{*message}",
            //the default value for the message
              new System.Web.Routing.RouteValueDictionary() { { "message", "" } },
            //any regular expression restrictions (i.e. @"[^\d].{4,}" means "does not start with number, at least 4 chars
              new System.Web.Routing.RouteValueDictionary() { { "message", @"[^\d].{4,}" } },
              new TestRoute.Handlers.PassthroughRouteHandler()
           );
    
        System.Web.Routing.RouteTable.Routes.Add(echoRoute);
    }
    
  • PassthroughRouteHandler.cs - это обеспечило автоматическое преобразование из http://andrew.arace.info/stackoverflow в http://andrew.arace.info/#stackoverflow, которое затем будет обрабатываться по умолчанию. Aspx:

    public class PassthroughRouteHandler : IRouteHandler {
    
        public IHttpHandler GetHttpHandler(RequestContext requestContext) {
            HttpContext.Current.Items["IncomingMessage"] = requestContext.RouteData.Values["message"];
            requestContext.HttpContext.Response.Redirect("#" + HttpContext.Current.Items["IncomingMessage"], true);
            return null;
        }
    }
    
1 голос
/ 13 мая 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...