【发布时间】:2014-01-21 18:15:29
【问题描述】:
我已经阅读了所有带有 MVC 标记的帖子,但没有看到像我这样的问题,也没有找到任何可以让我找到解决方案的东西,所以我希望有人能指出我的方向。
我有一个 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/” - 注意重复的虚拟目录。重写没有改变 URL,所以我不知道是什么原因造成的。
这是来自 web.config 的 webserver 元素:
<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 开发盒上运行正常。有什么想法吗?
【问题讨论】:
标签: asp.net-mvc-2 iis-7.5 virtual-directory