环境:MVC3.0,IIS7
Mvc3.0的部署除像正常部署aspx程序一样外,另外还需要注意的几点:
1. 安装MVC3.0
确保服务器上安装了MVC3.0,默认版本是“3.0.20105.0”
2. MVC版本一致性问题(重要)
此类问题会引起一堆譬如CS1705,CS0433类的问题,我就是碰到了这种问题,所以就这个问题详细说明一下:
此问题需要查看你本机开发时用的mvc类库版本与服务器上所安装的mvc类库版本是否一致,即使大版本号都是3.0,而小版本号不一致也会导致此类问题
MVC的版本号可通过控制面版上“Microsoft ASP.NET MVC 3”一行后面的版本来确定,我本机上的版本是“3.0.50813.0”,而服务器上的版本却是“3.0.20105.0”,因此就出现了版本不一致的问题
默认安装MVC3后的版本是“3.0.20105.0”,而版本“3.0.50813.0”是Microsoft针对MVC安全性发布的一个更新补丁包,如果你是刚装的mvc,一般情况下“3.0.20105.0”,过段时间通过windows的自动更新可能就会变成“3.0.50813.0”,所以这个版本问题不容易被发现
针对MVC的安全补丁说明:MS14-059 (KB2990942)
补丁地址: http://www.microsoft.com/zh-CN/download/details.aspx?id=44533
此补丁是一个集合补丁,里面包含了对 MVC 2.0、MVC 3.0、MVC 4.0、MVC 5.0 和 MVC 5.1的补丁
如果只需针对MVC3.0打补丁,则只需通过选择更新相应的补丁包即可,针对MVC3.0补丁包的名称其实为:KB2993937
由此即可解决版本问题
其它网上总结的也需要注意的,我没有碰到或者是有些配置本已集成了的:
1. 设置System.Web.Mvc.dll复制到本地(重要)
在VS的引用中右键System.Web.Mvc.dll,选择“属性”->“复制到本地”选择true,重新编译并发布
其实就是要带着本机的System.Web.Mvc.dll发布
我没有这么做,网站仍然可以访问,不过这条应该很重要,建议发布mvc时选择这项
2. 设置“ISAPI和CGI限制”
左键点击IIS根结节,在右侧的功能区选择“ISAPI和CGI限制”,点开,将ASP.NET v4.0.30319设置为允许,如果是64位系统应该有两条记录,一条是64位的,一条是32位的,反正我的都是不允许也照样可以
3. 检查“处理程序映射”
检查“处理程序映射”,看里面是不是有以下这三项:
ExtensionlessUrlHandler-Integrated-4.0
ExtensionlessUrlHandler-ISAPI-4.0_32bit
ExtensionlessUrlHandler-ISAPI-4.0_64bit
如果缺少请在命令行中运行:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
我的默认是有这三项的
4. 设置“处理程序映射”
左键点击网站,在右侧功能区选择“处理程序映射”,点开,在右侧点“添加通配符脚本映射”,添加如下内容:
请求路径:*
可执行文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
名称:可自己决定,一般填mvc3即可
我的这项也没有设置,网站仍然可以使用