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.首先下载有关的安装程序
这是我整理好的四个软件(大致一共10MB),分别如下
当然,如果你希望预先下载好Framework 安装包(例如你的客户场景是没有办法连接到网络),那么请继续下面的操作
如果你想要下载.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。这个特殊帐号是肯定可以访问数据库的。
当然,更加严谨的做法,是指定一个特定的帐号,这个帐号被授予了特定数据库的访问权限。
posted on 2010-06-02 18:40 陈希章 阅读(1966) 评论(28) 编辑 收藏 所属分类:
@dreamskyyu
其实我这就是Windows 7.呵呵。你可以马上试一下
我感觉, Window7比Windows 2003还要方便一些 回复引用查看
之前配置网站也是因为应用池的原因,摸索了3天才明白症结所在。 回复引用查看
我发现一个问题,不安装以前的.NET3.5的话,你在新建一个空的C++项目时,会产生错误..楼主试 一下,,按理,一个本机的VC++项目与.NET一点关系也没有 回复引用查看
回复引用查看
恩,微软要好好整下这个框架
从1.1,2.0 3.0 3.5 4.0全装下来要多大空间啊
硬盘便宜也不能这样折腾啊 回复引用查看
楼主别误导人家啊!.NET Framework 4.0以前的程序是可以在仅装有.NET Framework 4.0的机器中运行的。只要在配置文件中添加以下设置即可。
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>
回复引用
@8Y
关于这一点,我大致也是知道可以通过修改这个配置做出一些演示例子来,例如Hello,world之类的。
但我对此仍然是谨慎乐观的。事实上因为很多程序集都是在框架级别被重写过了,很难保证一个真正复杂的程序是否真的能运行起来。
一个现实的例子就是SQL Server自带的很多工具,如果不装.NET Framework 2的话,就通通不能运行了。
这估计也是之所以会强调并行安装的原因所在,像当年.NET 2和.NET 1.X时代的问题是一样的
仅供参考 回复引用查看
回复引用查看
呵呵,那估计有门。你试试看。
我自己不倾向于在XP上面装IIS 6. 回复引用查看
@老Q
@技术,趋势
我也觉得框架方面到目前为止看起来也是一个逐渐完善的过程。我们经历和参与了这个过程,有时候是幸运,有时候也是不幸,呵呵
回复引用查看
反正微软正在面临着混乱是不争的事实,尤其搞的是,同一个框架比如.net framework2。0 在不同的语言版本上还不能兼容。有时要装中文的,有时又需要英文的。比如Windows的更新,不是同语言的还装不上。这个就是真无语了。还是一字“悲剧” 回复引用查看
更值得一提的就是,比如装IE新版本,首先要找个同语言的吧,还要分什么X86,X64.简直就是恶搞,比如我中文系统,我就想装个E文的IE怎么了? 回复引用查看
冷静,冷静 回复引用查看
试过之后才会知道,为什么不倾向呢
只是只能建一个默认的网站,不像server一样可以建多个网站
回复引用查看
回复引用查看
回复引用查看
这个问题有点复杂,至少在我们作为局外人来看是这样 回复引用查看
底层架构都不一样了,你还要求软件通用?那是不可能的。
底层架构都不一样了,你还要求软件通用?那是不可能的。 回复引用
邮箱:(仅博主可见)
[使用Ctrl+Enter键快速提交评论]
Powered by:
博客园
Copyright © 陈希章