[ASP.NET][MVC] ASP.NET MVC (8) : 部署 MVC 3 应用程序到 IIS 7.5

ASP.NET MVC 应用程序的部署不像是 ASP.NET Web Form 这么简单,只要用 bin 就可以了,主要原因是 ASP.NET MVC 使用了 ASP.NET Routing 机制去维护 MVC 之间的连结,若 IIS 无法载入 ASP.NET Routing 时,就会发生无法运行的情况...


ASP.NET MVC 应用程序的部署不像是 ASP.NET Web Form 这么简单,只要用 bin 就可以了,主要原因是 ASP.NET MVC 使用了 ASP.NET Routing 机制去维护 MVC 之间的连结,若 IIS 无法载入 ASP.NET Routing 时,就会发生无法运行的情况。

所以,在部署 ASP.NET MVC 3 应用程序前,请先检视下列环境:

1. 请务必注册 ASP.NET 4.0 (v4.0.30319,如果是在 .NET Framework 4 安装后才安装 IIS 的,请记得执行 %WINDIR%Microsoft.NETFramework64v4.0.30319aspnet_regiis -ir,若是 32 位则是 %WINDIR%Microsoft.NETFrameworkv4.0.30319aspnet_regiis -ir)。

2. 应用程序集区的版本,请使用 v4.0.30319

3. 安装 ASP.NET MVC 3.0 Runtime Libraries,若不想安装,则需要在 MVC 应用程序的 bin 目录中放入几个组件 DLL,可参考本讨论。

而在部署应用程序时,可能会碰到几种问题:

1. HTTP 404.0,表示路径错误,但路径对仍出现这消息,表示 ASP.NET Routing 未启动,此时可能是 System.Web.Routing.dll 找不到或是 ASP.NET 本身没有注册到 IIS。

2. 浏览默认路径时发生 HTTP 403,表示 Routing 的默认路径不正确或没有设定。

3. 遗失某些组件:

image

这个状况比较会发生在使用 Razor 作为 View engine 的 MVC 3 应用程序,如果是选用 Razor 的话,则还要在项目中加入下列组件的参考,并且将 "复制到本机" 设为 true:

  • Microsoft.Web.Infrastructure.dll
  • System.Web.Razor.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.Helpers.dll

完成以后,再用一般的 ASP.NET 应用程序部署方式部署,就可以正常使用了。

PS: 以上以 IIS 7.5 为撰写基础,若是其他版本,请 Google 一下 "Deploy MVC3 IIS" 就能找到不少数据可参考。