分享

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

 simenshow 2013-09-16

基于.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./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。这个特殊账号是肯定可以访问数据库的。

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

8
0
(请您对文章做出评价)
上一篇:XML Web Service并发异步调用的问题及其解决方案
下一篇:ADO.NET Data Service中更新和查询一对多实体集的注意事项

posted on 2010-06-02 18:40 陈希章 阅读(19588) 评论(38) 编辑 收藏

评论

#1楼 2010-06-02 18:54 dreamskyyu  

windows 7 下怎么配啊?可以写一下吗?
  

#2楼[楼主] 2010-06-02 19:02 陈希章  

@dreamskyyu
其实我这就是Windows 7.呵呵。你可以马上试一下

我感觉, Window7比Windows 2003还要方便一些
  

#3楼 2010-06-02 19:14 Alex He  

如此的先进
  

#4楼 2010-06-02 19:45 一只小鱼  

之前配置网站也是因为应用池的原因,摸索了3天才明白症结所在。
  

#5楼 2010-06-02 20:04 toEverybody  

我发现一个问题,不安装以前的.NET3.5的话,你在新建一个空的C++项目时,会产生错误..楼主试 一下,,按理,一个本机的VC++项目与.NET一点关系也没有
  

#6楼 2010-06-02 21:00 amwteje  

我怎么感觉有点像杯具,,呵呵。。
  

#7楼 2010-06-02 22:05 aito  

原来部署一个网站要那么麻烦的!之前只是部署过ASP的,没想到.NET要那么麻烦!
顶一个……
  

#8楼 2010-06-02 22:26 builderman  

xp上可以装IIS6
  

#9楼 2010-06-02 22:28 技术,趋势  

.net FrameWork的版本就是个悲剧。是个比危地马拉还大的坑,他们(微软)内部都很混乱。Win7带个3。5SP1,你要安装Sql 2005,又给装个2。0, 最新的4。0,还运行不了以前的。表面看都是.net Framework,实际上看,每个版本都可以看成是个需单独布署的框架。
  

#10楼 2010-06-02 22:44 老Q  

恩,微软要好好整下这个框架

从1.1,2.0 3.0 3.5 4.0全装下来要多大空间啊

硬盘便宜也不能这样折腾啊
  

#11楼 2010-06-02 22:57 8Y[未注册用户]

楼主别误导人家啊!.NET Framework 4.0以前的程序是可以在仅装有.NET Framework 4.0的机器中运行的。只要在配置文件中添加以下设置即可。
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>
  

#12楼 2010-06-03 00:59 今晚爆你菊花  

不错,学习了~~~~~~~~~~
  

#13楼[楼主] 2010-06-03 06:36 陈希章  

@8Y
关于这一点,我大致也是知道可以通过修改这个配置做出一些演示例子来,例如Hello,world之类的。

但我对此仍然是谨慎乐观的。事实上因为很多程序集都是在框架级别被重写过了,很难保证一个真正复杂的程序是否真的能运行起来。

一个现实的例子就是SQL Server自带的很多工具,如果不装.NET Framework 2的话,就通通不能运行了。

这估计也是之所以会强调并行安装的原因所在,像当年.NET 2和.NET 1.X时代的问题是一样的

仅供参考
  

#14楼[楼主] 2010-06-03 06:37 陈希章  

@aito
其实还好啦,这些都是属于基础知识,呵呵
  

#15楼[楼主] 2010-06-03 06:38 陈希章  

引用builderman:xp上可以装IIS6

呵呵,那估计有门。你试试看。

我自己不倾向于在XP上面装IIS 6.
  

#16楼[楼主] 2010-06-03 06:40 陈希章  

@老Q
@技术,趋势

我也觉得框架方面到目前为止看起来也是一个逐渐完善的过程。我们经历和参与了这个过程,有时候是幸运,有时候也是不幸,呵呵

  

#17楼 2010-06-03 09:13 技术,趋势  

引用陈希章:
@老Q
@技术,趋势

我也觉得框架方面到目前为止看起来也是一个逐渐完善的过程。我们经历和参与了这个过程,有时候是幸运,有时候也是不幸,呵呵


反正微软正在面临着混乱是不争的事实,尤其搞的是,同一个框架比如.net framework2。0 在不同的语言版本上还不能兼容。有时要装中文的,有时又需要英文的。比如Windows的更新,不是同语言的还装不上。这个就是真无语了。还是一字“悲剧”
  

#18楼 2010-06-03 09:15 技术,趋势  

更值得一提的就是,比如装IE新版本,首先要找个同语言的吧,还要分什么X86,X64.简直就是恶搞,比如我中文系统,我就想装个E文的IE怎么了?
  

#19楼[楼主] 2010-06-03 11:11 陈希章  

@技术,趋势
"悲剧"明显是俩字,呵呵
  

#20楼[楼主] 2010-06-03 11:11 陈希章  

引用技术,趋势:更值得一提的就是,比如装IE新版本,首先要找个同语言的吧,还要分什么X86,X64.简直就是恶搞,比如我中文系统,我就想装个E文的IE怎么了?


冷静,冷静
  

#21楼 2010-06-03 13:10 builderman  

试过之后才会知道,为什么不倾向呢
只是只能建一个默认的网站,不像server一样可以建多个网站
  

#22楼 2010-06-03 14:10 wade black  

还在用.net framework 2.0
  

#23楼 2010-06-03 14:58 诺贝尔  


.net 的版本策略真的很失败.

就不能默认是向下支持,然后特殊情况需要配置么?
  

#24楼[楼主] 2010-06-03 19:49 陈希章  

@builderman
嗯,我只是说我不会用XP去做服务器
  

#25楼[楼主] 2010-06-03 19:49 陈希章  

@wade black
其实2.0确实不错
  

#26楼[楼主] 2010-06-03 19:50 陈希章  

引用诺贝尔:
.net 的版本策略真的很失败.

就不能默认是向下支持,然后特殊情况需要配置么?

这个问题有点复杂,至少在我们作为局外人来看是这样
  

#27楼 2010-06-04 11:00 Vseen[ Aloner ]  

好东东,收藏起来
  

#28楼 2010-06-04 11:21 公爵[未注册用户]

引用技术,趋势:更值得一提的就是,比如装IE新版本,首先要找个同语言的吧,还要分什么X86,X64.简直就是恶搞,比如我中文系统,我就想装个E文的IE怎么了?

底层架构都不一样了,你还要求软件通用?那是不可能的。
  

#29楼 2010-09-22 12:12 wade black  

引用陈希章:
引用诺贝尔:
.net 的版本策略真的很失败.

就不能默认是向下支持,然后特殊情况需要配置么?

这个问题有点复杂,至少在我们作为局外人来看是这样


这下好了,每个程序都需要价格 *.exe.config
  

#30楼 2010-09-27 10:34 smilekiki[未注册用户]

framework最好别向下兼容,不然安装文件只会越做越大。客户端懒得装了。
  

#31楼 2010-12-30 21:31 toEverybody  

可是我关心的是4.0对Winform的改进呀。。。。是不是微软放弃了Winform的更新了。。郁闷!
  

#32楼[楼主] 2011-01-05 14:57 陈希章  

@toEverybody
winforms的发展已经到了一个很成熟的阶段了,我个人估计没有太多改进的机会了
  

#33楼 2011-06-16 14:55 RicoRui  

其实我一直对这个Managed Pipleline Mode有几个问题,1.Integrated和Classic有什么区别?
2.什么时候Deploy时会使用Integrated的呢?
以上就是我随手一问,可以不回复
  

#34楼[楼主] 2011-06-19 11:18 陈希章  

  

#35楼 2011-06-19 23:43 RicoRui  

噢,非常感谢,楼主,给了如此全面的解释。
  

#36楼 2013-06-16 22:59 Tony.Works  

WPF的应用在xp上启动报这个错误,郁闷,还没找到解决方案:http://www.cnblogs.com/wangzhiyu811/archive/2013/04/20/3033317.html
  

#37楼[楼主] 2013-06-17 17:32 陈希章  

@Tony.Works
很抱歉,目前我也没有这方面的环境进行测试。看看给xp安装sp3行不行呢?
http://cn.bing.com/search?q=windows+xp+sp3+site%3Amicrosoft.com&go=&qs=ds&form=QBRE

我们现在开发WPF应用,最为理想的部署环境是.NET 4.0 + Windows 7
  

#38楼 2013-06-17 21:56 Tony.Works  

@陈希章
嗯,.Net4.0+windows7是很理想的部署环境,就是外面用户很多是xp,今天下午在纯净版上测试了下,.net4.0是可以直接安装在xp sp3上的
  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多