2014-01-21 9 views
0

Я прочитал все сообщения с меткой MVC и не видел проблемы, подобные моей, или нашел что-нибудь, что привело меня к решению, м надеясь, что кто-то может указать мне в направлении.Перенос приложения MVC 2 из IIS 6 в IIS 7.5 = дублированный виртуальный каталог

У меня есть веб-приложение MVC 2, работающее под приложением веб-форм на Win 2003/IIS6, и я переношу на Win 2008/IIS7.5. Я читал о режиме Integrated Pipeline и внес изменения в веб-конфигурацию, чтобы включить элементы «System.webserver» для обработчиков HTTP. Затем загружается страница Default.aspx, а затем перезаписывает входящий запрос для «domain/site1/site2/default.aspx» на «domain/site1/site2 /», а загрузка Homecontroller и индекс просматривается. Проблема заключается в том, что Url.Content и Html.ActionLink разрешают «/ site1/site2/site2 /» - замещать дублирующий виртуальный каталог. URL-адрес не изменяется с помощью перезаписи, поэтому я не могу понять, что вызывает это.

Вот вебсервер элемент из web.config:

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

    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="ScriptModule"/> 
     <remove name="UrlRoutingModule"/> 
     <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </modules> 

    <handlers> 
     <remove name="WebServiceHandlerFactory-Integrated"/> 
     <remove name="ScriptHandlerFactory"/> 
     <remove name="ScriptHandlerFactoryAppServices"/> 
     <remove name="ScriptResource"/> 
     <remove name="UrlRoutingHandler"/> 
     <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" 
      type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" 
      type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </handlers> 
</system.webServer> 

Вот метод RegisterRoutes:

Shared Sub RegisterRoutes(ByVal routes As RouteCollection) 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 


    routes.MapRoute(_ 
     "Default", _ 
     "{controller}.aspx/{action}/{id}", _ 
     New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _ 
    ) 
    routes.MapRoute(_ 
     "Root", _ 
     "", _ 
     New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _ 
    ) 
End Sub 

AppPool установлен в интегрированном режиме, Разрешить 32-разрядные приложения = True, и Target Framework = 2,0.
Я также пробовал классический режим на AppPool без каких-либо различий в поведении.

Он работает корректно в моем окне разработки Win7. Есть идеи?

ответ

0

После очистки SO и других источников, я нашел 21228660/url-content-doesnt-resolve-absolute-path-on-one-server-but-does-on-another, который привел меня к исходному коду MVC 2. Оказывается, что в классе PathHelper он проверяет заголовок HTTP «HTTP_X_ORIGINAL_URL», указывающий HTTP Rewrite. Я добавил код на странице Default.aspx перед оператором RewritePath, чтобы удалить «HTTP_X_ORIGINAL_URL» из коллекции ServerVariables, и все хорошо!

 Смежные вопросы

  • Нет связанных вопросов^_^