VS 2010发布之后,随着而来的框架版本也升级到了.NET Framework 4.0。我相信很多朋友已经在用了吧。这一篇文章总结了如何基于.NET Framework 4.0,进行解决方案部署。
之所以要单独写一下,是因为确实这个版本与之前的.NET Framework 2.0,3.0,3.5是不一样的。我们自己在用的时候也摸索了一些时间。所以总结出来给大家参考参考吧,以免多走弯路。
重点事项:
- .NET Framework 4与之前的版本是可以并行的,他们并不互相干扰。也就是说,你不必在安装.NET Framework 4之前安装其他的任何一个版本。(前提是,你只是想运行.NET Framework 4的程序)
- 令很多朋友最感疑惑的是,如果安装了.NET Framework 4,那么之前的软件能否运行(例如基于.NET Framework 2)呢?答案是:不能
- 因为这种并行的情况,所以在服务端要特别注意,设置ASP.NET引擎的版本。
- .NET Framework 4 所支持的客户端操作系统最低是Windows XP,服务器操作系统是Windows Server 2003。之前的Windows 2000甚至更高版本全部不受支持。
- .NET Framework 4的网站无法部署在Windows XP中。换而言之,Windows XP只能作为客户端,因为XP带的IIS 是5.1,而.NET Framework 4所要求的IIS版本最低是IIS 6.
部署提示:
1.首先下载有关的安装程序
NET_Framework_4.0installer.rar
这是我整理好的四个软件(大致一共10MB),分别如下
- WindowsInstaller-KB893803-v2-x86(3.1).exe 如果你的机器(不管是服务器还是客户端)什么都没有安装过,那么必须先装这个installer 3.1才可以安装Framework
- wic_x86_enu.exe 如果你的机器是XP(通常是指客户端),那么在安装.NET Framework 4之前需要安装这个WIC(Windows Image Component),不要问我这是干啥用的,我也不知道,呵呵
- ReportViewer2010.exe 如果你的应用程序使用了报表查看器,则需要安装这个
- en_.net_framework_4_full_web_installer_x86_x64_ia64_516530.exe 这是在线安装.NET Framework 4的一个引导程序。你需要确保网络畅通。
当然,如果你希望预先下载好Framework 安装包(例如你的客户场景是没有办法连接到网络),那么请继续下面的操作
- 如果你想要下载完整的安装包,则访问这里http://www.microsoft.com/downloads/details.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=en
- 大致是48MB的安装包,应该还是可以接受的。不像原先.NET Framework 3.5那么恐怖(那时好像将近200MB,客户直接就崩溃了)
- 如果你想要下载.NET Framework 4 Client Profile ,则访问这里 http://www.microsoft.com/downloads/details.aspx?FamilyID=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&displaylang=en
- 大致是41MB的安装包,与Full相差大致7MB,我个人觉得这就没有啥优势了。而且选用了Client Profile的话,有好些个功能都不能用。其实更关键在于你不知道哪些能用,哪些不能用(确实有一些文档介绍他们的区别,但谁有那闲工夫去记住那么多区别呢)。所以,我们全部采用Full,免得麻烦。
2.服务器端的一般部署过程
客户端部署相对很简单,你只要把上面的一些软件安装好,基本上就不会有什么问题,程序能运行起来。但服务器端可就没有这么容易了。下面就假设你有一个Web Application需要部署
首先,如何打包这个Web Application呢?这个方面,VS2010做了一些不错的改进,它可以直接发布,更可以打包成一个所谓的Package,如下面的菜单
![]()
打包好之后会在项目的Obj目录下面,Debug目录下面,再创建一个Package目录,你可以看到下面的一些文件
![]()
其次,如何在服务器端部署这个Web Application呢?
你需要将上面这个Package目录全部复制,然后发送给服务器管理员。那么服务器管理员要怎么将这个Application部署起来呢?他有几种方式。
第一种方式,使用MS Deploy工具。
http://www.iis.net/download/webdeploy
这个工具是微软提供出来给IIS 6和IIS 7用的,可以很方便地进行应用程序部署。你可以通过上面的地址下载到。(值得一提的是,这个工具安装之前需要当前服务器安装了.NET Framework 2.0 sp1)
![]()
如果安装好了,我们打开IIS 之后会看到一些小的变化
![]()
大家可以看到,现在网站上面多出来一个“Deploy”的菜单,里面有几个菜单项,我们现在可以点击“Import Application”
首先,我们需要指定那个部署包的位置,是那个zip文件
![]()
![]()
![]()
【注意】这里可以修改连接字符串
![]()
【注意】因为检测到我们是.NET Framework 4的Web Application,所以会提示将Application Pool选择为.NET 4.0的,我们当然毫不犹豫地点击“yes”
![]()
很快就安装好了。它到底做了什么呢?其实它会把文件复制到wwwroot里面来
![]()
但是,这里需要注意的是,它是随机选择了一个.NET Framework 4.0 的Application Pool, 例如在我的机器上是这样的
![]()
有的时候,我们可能会发现程序运行不起来,例如
![]()
经验告诉我们,凡是503错误,多半是与应用程序池有关系。
我尝试重启这个程序池,问题依旧
![]()
然后,我发现这个程序池有些特殊之处在于它的Managed Pipleline Mode是Integrated,是不是这个有问题呢?
我尝试选择了一个Managed Pipleline Mode为Classic的应用程序池,例如
![]()
重新刷新一下就可以正常运行我的应用程序了
![]()
到这里,我们就完成了服务器端应用程序的部署。这个演练中,我们使用了MS Deploy工具。但事实上,不用工具也是一模一样可以做到的。只要记住下面两点
1. 应用程序池要基于.NET Framework 4
2. 应用程序池的Managed Pipleline Mode要选择为Classic
最后,还有一个可能会遇到的问题,就是如果你的应用程序会连接到数据库,而且数据库连接字符串是像下面这样写的
Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True
那么,大家要知道的一个情况是,因为你是Integrated security=true,所以最后访问数据库时所使用的身份是应用程序池的标识。那么,很显然地,你需要确保这个标识有访问数据库的权限。
![]()
【注意】如果是访问本地的服务器和数据库,为简单起见,你可以直接设置为LocalSystem。这个特殊帐号是肯定可以访问数据库的。
当然,更加严谨的做法,是指定一个特定的帐号,这个帐号被授予了特定数据库的访问权限。