我已經閱讀了所有MVC標記的帖子,並沒有看到過像我這樣的問題或發現任何導致我找到解決方案的問題,希望有人能指出我的方向。將MVC 2應用程序從IIS 6遷移到IIS 7.5 =重複的虛擬目錄
我有一個MVC 2 web應用程序運行在Win 2003/IIS6上的Web窗體應用程序,我正在遷移到Win 2008/IIS7.5。我已閱讀集成管道模式,並已對Web配置進行了更改,以包含http處理程序的「System.webserver」元素。然後加載Default.aspx頁面,然後將傳入的「domain/site1/site2/default.aspx」請求重寫爲「domain/site1/site2 /」,然後Homecontroller執行並加載索引視圖。問題是Url.Content和Html.ActionLink解析爲「/ site1/site2/site2 /」 - 請注意重複的虛擬目錄。該網址沒有被重寫改變,所以我無法弄清楚是什麼原因造成的。
下面是從web.config web服務器元件:
<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
的程序池被設置爲集成模式下,允許32個應用程序=真,並且目標框架= 2.0。
我也試過AppPool上的經典模式,沒有任何行爲差異。
它在我的Win7開發框上正確運行。有任何想法嗎?