Я прочитал все сообщения с меткой 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. Есть идеи?