[.net framework4.0]基于.NET Framework 4.0的解决方案部署

|>> 官方网站:

导航统计公告2008年5月重新启用,将作为本人技术方面的博客。

有部分随笔是之前在别的网站发布的,或者根据以前笔记整理 的。

绝大多数随笔均为原创,标题中标明【转载】者除外。

随笔分类随笔档案个人链接微软中国研发团队相关下载积分与排 名
@张磊_larry.zhang 我比较有兴趣的是你干啥要用那个sql_variant类型,呵呵 --陈希章 [quote]陈希章:我认为这个问题应该无解。EF是基于强类型的,而那个sql_variant不是一个强类型,呵呵。你在什么场合下会用这个类型呢 错误消息已经很清楚了。 Message 1 Th... --张磊_larry.zhang @陈希章到处乱跑中啊 --flyingchen [quote]flyingchen: @陈希章我来了北京,呵呵[/quote] 呵呵,居然又跑到北京去了啊,我今年倒是经常去苏州的 --陈希章 @陈希章我来了北京,呵呵 --flyingchen [quote]张磊_larry.zhang:老大,我曾经有个数据表的字段是sql_variant类型,EF无法映射该类型最后导致数据层同时使用了 EF和企业库不知老大有没有碰到过[/quote] ... --陈希章 [quote]flyingchen:来看看陈老师[/quote] 谢谢啊,好久不见了:) --陈希章 老大,我曾经有个数据表的字段是sql_variant类型,EF无法映射该类型最后导致数据层同时使用了EF和企业库不知老大有没有碰到过 --张磊_larry.zhang 来看看陈老师 --flyingchen [quote]技术,趋势:更值得一提的就是,比如装IE新版本,首先要找个同语言的吧,还要分什么X86,X64.简直就是恶搞,比如我中文系统,我就 想装个E文的IE怎么了?[/quote] 底层架构都不一... --公爵 好东东,收藏起来 --Vseen[ Aloner ] [quote]诺贝尔: .net 的版本策略真的很失败. 就不能默认是向下支持,然后特殊情况需要配置么? [/quote] 这个问题有点复杂,至少在我们作为局外人来看是这样 --陈希章 @wade black 其实2.0确实不错 --陈希章 @builderman 嗯,我只是说我不会用XP去做服务器 --陈希章 .net 的版本策略真的很失败. 就不能默认是向下支持,然后特殊情况需要配置么? --诺贝尔
阅 读排行榜评论排行榜

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,如下面的菜单

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第1张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第2张图片

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

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

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

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

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第3张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第4张图片

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

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第5张图片

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第6张图片

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第7张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第8张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第9张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第10张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第11张图片 [.net framework4.0]基于.NET Framework 4.0的解决方案部署_第12张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第13张图片

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

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第14张图片

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

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第15张图片

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第16张图片

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

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

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

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

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

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

[.net framework4.0]基于.NET Framework 4.0的解决方案部署_第17张图片

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

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

posted on 2010-06-02 18:40 陈希章 阅读(1966) 评论(28)  编辑 收藏 所属分类:

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

@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 © 陈希章

你可能感兴趣的:(.net,windows,数据库,服务器,application,IIS)