基于.NET Framework 4.0的解决方案部署

VS 2010发布之后,随着而来的框架版本也升级到了.NET Framework 4.0。我相信很多朋友已经在用了吧。这一篇文章总结了如何基于.NET Framework 4.0,进行解决方案部署。

之所以要单独写一下,是因为确实这个版本与之前的.NET Framework 2.0,3.0,3.5是不一样的。我们自己在用的时候也摸索了一些时间。所以总结出来给大家参考参考吧,以免多走弯路。

 

重点事项:

  1. .NET Framework 4与之前的版本是可以并行的,他们并不互相干扰。也就是说,你不必在安装.NET Framework 4之前安装其他的任何一个版本。(前提是,你只是想运行.NET Framework 4的程序)
  2. 令很多朋友最感疑惑的是,如果安装了.NET Framework 4,那么之前的软件能否运行(例如基于.NET Framework 2)呢?答案是:不能
  3. 因为这种并行的情况,所以在服务端要特别注意,设置ASP.NET引擎的版本。
  4. .NET Framework 4 所支持的客户端操作系统最低是Windows XP,服务器操作系统是Windows Server 2003。之前的Windows 2000甚至更高版本全部不受支持。
  5. .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 安装包(例如你的客户场景是没有办法连接到网络),那么请继续下面的操作

 

2.服务器端的一般部署过程

客户端部署相对很简单,你只要把上面的一些软件安装好,基本上就不会有什么问题,程序能运行起来。但服务器端可就没有这么容易了。下面就假设你有一个Web Application需要部署

 

首先,如何打包这个Web Application呢?这个方面,VS2010做了一些不错的改进,它可以直接发布,更可以打包成一个所谓的Package,如下面的菜单

image

打包好之后会在项目的Obj目录下面,Debug目录下面,再创建一个Package目录,你可以看到下面的一些文件

image

 

其次,如何在服务器端部署这个Web Application呢?

你需要将上面这个Package目录全部复制,然后发送给服务器管理员。那么服务器管理员要怎么将这个Application部署起来呢?他有几种方式。

第一种方式,使用MS Deploy工具。

http://www.iis.net/download/webdeploy

这个工具是微软提供出来给IIS 6和IIS 7用的,可以很方便地进行应用程序部署。你可以通过上面的地址下载到。(值得一提的是,这个工具安装之前需要当前服务器安装了.NET Framework 2.0 sp1)

image

如果安装好了,我们打开IIS 之后会看到一些小的变化

image

大家可以看到,现在网站上面多出来一个“Deploy”的菜单,里面有几个菜单项,我们现在可以点击“Import Application”

首先,我们需要指定那个部署包的位置,是那个zip文件

image

image

image

【注意】这里可以修改连接字符串

image

【注意】因为检测到我们是.NET Framework 4的Web Application,所以会提示将Application Pool选择为.NET 4.0的,我们当然毫不犹豫地点击“yes”

image

很快就安装好了。它到底做了什么呢?其实它会把文件复制到wwwroot里面来

image

但是,这里需要注意的是,它是随机选择了一个.NET Framework 4.0 的Application Pool, 例如在我的机器上是这样的

image image

有的时候,我们可能会发现程序运行不起来,例如

image

经验告诉我们,凡是503错误,多半是与应用程序池有关系。

我尝试重启这个程序池,问题依旧

image

然后,我发现这个程序池有些特殊之处在于它的Managed Pipleline Mode是Integrated,是不是这个有问题呢?

我尝试选择了一个Managed Pipleline Mode为Classic的应用程序池,例如

image

重新刷新一下就可以正常运行我的应用程序了

image

到这里,我们就完成了服务器端应用程序的部署。这个演练中,我们使用了MS Deploy工具。但事实上,不用工具也是一模一样可以做到的。只要记住下面两点

1. 应用程序池要基于.NET Framework 4

2. 应用程序池的Managed Pipleline Mode要选择为Classic

 

最后,还有一个可能会遇到的问题,就是如果你的应用程序会连接到数据库,而且数据库连接字符串是像下面这样写的

Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True

那么,大家要知道的一个情况是,因为你是Integrated security=true,所以最后访问数据库时所使用的身份是应用程序池的标识。那么,很显然地,你需要确保这个标识有访问数据库的权限。

image

【注意】如果是访问本地的服务器和数据库,为简单起见,你可以直接设置为LocalSystem。这个特殊帐号是肯定可以访问数据库的。

当然,更加严谨的做法,是指定一个特定的帐号,这个帐号被授予了特定数据库的访问权限。

posted @ 2010-06-02 18:40  陈希章  阅读(30981)  评论(39编辑  收藏  举报