若目標主機僅支援 .NET Framework 2.0(如早期虛擬主機),需將 ASP.NET MVC 專案(預設 .NET 3.5)調整為相容模式部署。核心在於:所有 3.5/3.0 組件設為「複製到本機」,並修改 Web.config 移除 3.5 專屬設定。
System.Web.Mvc, System.Web.Routing, System.Web.Abstractions, System.Core 等)。完整範例見下方,重點說明:
UrlRoutingModule 註冊(版本仍指 3.5)。*.mvc 對應至 aspnet_isapi.dll(v2.0 版本)。<httpModules>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRoutingModule" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
<add name="MvcScriptMap" preCondition="classicMode,bitness32" verb="*" path="*.mvc" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" />
<add name="MvcScriptMap64" preCondition="classicMode,bitness64" verb="*" path="*.mvc" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" />
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.Routing.UrlRoutingHandler, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
</system.webServer>
.mvc 副檔名,可改用 .ashx 或 .aspx 對應。透過組件本機複製與 Web.config 精準調整,可在舊版 .NET 2.0 主機上執行 ASP.NET MVC 應用程式,延長舊環境投資報酬。