`

ASP.NET 网站部署 Part.2(使用 Web 部署)

 
阅读更多

   Web 部署可以在 VS2010 里直接使用 HTTP 部署网站(此方式不可以在无项目文件的网站使用)。不要把 Web 部署和 FPSE(Front Page Server Extensions)混淆,FPSE 已经过时。

 

1. 准备 IIS

       需要添加两个额外的组件。再次打开 WebPI,在 Web 平台页签的 Web 服务器里选择“自定义”,在“部署和发布”里选择“Web 部署工具”,在管理里选中“管理服务”选项。同时选中这两项对于让部署正常工作极其重要。

       安装完成后,启动 IIS管理器,从“连接”的树控件里选择服务器项。滚动到屏幕底部,如果所有部件都已经正确安装,会看到两个新图标:管理服务、管理服务代理。

       配置并启动一个监听远程 IIS 管理请求的 Windows 服务:双击“管理服务”图标打开对话框,选中“启用远程连接”选项,单击应用,然后单击“启动”。启用远程连接,就是允许其他计算机对 IIS 执行管理工作。

       默认情况下,管理服务并不随服务器的启动自动启动。如果你希望它自动启动,则需要在“服务”工具里修改 Web Management Service 的设置:

image

 

2. 网站

       为了演示,我们使用 “ASP.NET 空 Web 应用程序”模板创建一个 VS 项目,新增一个 Default.aspx 表单,内容与上一篇文章(文件复制部署网站)中介绍一样,显示正确的 .NET 版本号。

image

protected void Page_Load(object sender, EventArgs e)
{
    Label1.Text = System.Environment.Version.Major.ToString();
}

 

3. 转换 web.config

       从开发测试到生产,很多项目都要经历一系列的部署过程,其中每一步都会牵涉不同配置的服务器。Web 部署模型有一个有用的功能,它能够在部署过程中对 Web.config 文件进行转换,使其对每一步都可用

       在解决方案资源管理器里展开 web.config,可以看到对象项目的每一个编译配置都有一系列的项,它们是 web.config 转换文件。默认情况下,VS2010 创建 Debug 和 Release 配置,但也可以使用配置管理器来添加自定义配置。也可使用配置管理器添加自定义配置。

image image

       在 Web 部署中,活动编译配置转换文件里的 XML 语句被应用到项目的源 web.config 来添加、修改和删除配置设置。项目部署时,转换后的设置被包含在里面,也就是说不需要为各个阶段的数据库连接手工修改连接字符串。它不仅仅是方便,还减少 在部署时由于配置错误导致环境中断的问题。

       随后我会演示配置文件可以应用的最有用的转换。每一个示例都会使用相同的源 web.config 文件,它的内容如下:

<?xml version="1.0" encoding="utf-8"?>
 
<configuration>
  <connectionStrings>
    <add name="NorthwindConnectionString" connectionString="Data Source=.\SqlExpress;
         AttachDbFileName=|DataDirectory|\Northwind.mdf;Integrated Security=True;
         User Instance=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
</configuration>

       它包含一个指向我们开发工作站 Northwind 数据库的连接字符串,目标框架是 .NET 4,带有调试符号。

 

1. 设置属性 

       最常见的转换是修改源 web.config 里设置的属性值。例如,修改数据库的连接字符串。这个 web.release.config 转换文件修改连接字符串,以使它指向我们的 Windows Server 2008 R2 机器:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="NorthwindConnectionString"
      connectionString="Data Source=PC-SKYSOOT;Initial Catalog=Northwind;Integrated Security=True"
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

       如果要设置已经存在的属性,使用和源文件相同的定义并增加 TransformLocator 元素。把 Transform 设置为 SetAttributes 将把匹配的元素替换为转换后的数据,在这里是修改后的连接字符串。Locator 元素指定通过 name 属性来匹配元素,这里是 NorthwindConnectionString。当同一类型具有多个属性时,能精确指定要匹配哪个元素。

       使用 Release 配置部署项目时,转换就会被应用,安装到 IIS 的 web.config 将会包含新的连接字符串,如下所示:

<?xml version="1.0" encoding="utf-8"?>
 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="NorthwindConnectionString"
      connectionString="Data Source=PC-SKYSOOT;Initial Catalog=Northwind;Integrated Security=True"
      providerName="System.Data.SqlClient"/>
  </connectionStrings>

       简单来说,转换引擎把开发连接字符串(它使用 SQL Server Express 的附加文件)替换为了部署连接字符串(它连接到另一台服务器)。转换直到部署时才会发生,因此,即使切换编译配置并重新构建项目,开发工作站还继续使用项 目的 web.config 的值。[既然已经使用 Web 部署,那么肯定你是无权限或不该具备直接修改服务器文件的权限,那么只有在部署网站时对将要在服务器上生成的 web.config 文件预先做好处理,这就是转换引擎存在的价值]

 

2. 插入元素

       把 Transform 的值设为 Insert 为配置文件插入新元素,我们新加了一个转换,它添加第二个连接字符串,以黑体标注:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="NorthwindConnectionString"
      connectionString="Data Source=PC-SKYSOOT;Initial Catalog=Northwind;Integrated Security=True"
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
 
  <connectionStrings>
    <add name="Connection2" connectionString="Data Source=MyServer;Initial Catalog=MyDB;
         Integrated Security=True" xdt:Transform="Insert"/>
  </connectionStrings>

       我们保留了第一个示例以演示指定多个转换的格式。部署项目将会得到如下转换后的 web.config:

<?xml version="1.0" encoding="utf-8"?>
 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="NorthwindConnectionString"
      connectionString="Data Source=PC-SKYSOOT;Initial Catalog=Northwind;Integrated Security=True"
      providerName="System.Data.SqlClient"/>
    <add name="Connection2" connectionString="Data Source=MyServer;Initial Catalog=MyDB;
     Integrated Security=True" xdt:Transform="Insert"/>
  </connectionStrings>

 

3. 替换配置节

       设置 Transform 值为 Replace,替换 web.config 的整个配置节,如下:

<system.web xdt:Transform="Replace">
  <customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly">
    <error statusCode="500" redirect="InternalError.htm"/>
  </customErrors>
</system.web>

       这个转换指定 web.config 的 system.web 块整体由转换文件的内容替换。开发连接字符串仍旧被保留,但目标 Framework 版本被替换了。

 

4. 移除元素

       声明一个配置节,把它的 Transform 值设为 Remove 来移除配置节,如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings xdt:Transform="Remove"></connectionStrings>
</configuration>

       这个转换将移除所有连接字符串配置节.

       可以通过 RemoveAttributes 用逗号分隔的列表来移除指定的属性:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug,targetFramework)"/>
  </system.web> 
</configuration>

 

发布数据库

       Web 部署另一个有用的功能是在发布项目时同时发布数据库。在部署过程中会生成一个 SQL 脚本,包含数据库架构 或 架构和数据。这个脚本被用来填充部署环境,使用这个功能要万分小心,它可能会用测试数据覆盖产品数据库

       配置数据库发布分两步进行。在项目的“包/发布 Web” 页签里选择“在包里包括全部数据库配置”来启用这个功能。

       此功能具有一定的风险,且一般不用,这里不多介绍。

 

部署网站

       在 VS 中,将解决方案配置模式改为 Release,“生成”菜单中选择“发布…”,菜单项的准确名称取决于项目名称。你会看到发布对话框,它是 Web 部署功能的核心。

       image

       在服务 URL 里输入要发布到的服务器名称。我这里是 PC-SKYSOOT。“网站/应用程序”输入框用于指定网站部署的地址,并且如我们之前解释过的,它构成客户端使用的 URL。对于这个示例,我们希望使用如下格式的 URL:

/WebsiteDeployment/WebDeploy/">http://<servername>/WebsiteDeployment/WebDeploy/

       为了得到这个效果,我们在输入框内输入了 Default Web Site/WebsiteDeployment/WebDeploy。选中标记为 IIS 上的应用程序,这和文件复制发布方式最后的转换为 Web 应用程序是一致的

       在“凭据”里,由于我是本机做IIS服务器并且以管理员身份登录,所以这里是灰色不可选的状态。如果没有从证书授权中心给 IIS 7 安装证书,则启用“允许不受信任的证书”。

       现在单击发布,如果舒心 IIS管理器,就可以看见网站已经被正确部署了,所有的 web.config 转换都已经被应用。

       image image

 

原文:http://www.cnblogs.com/SkySoot/archive/2013/04/01/2993665.html

分享到:
评论

相关推荐

    [ASP.NET.2.0.揭秘].Sams.ASP.NET.2.0.Unleashed.Jun.2006

    揭秘].Sams.ASP.NET.2.0.Unleashed.Jun.2006 共2个包这是第一个 第I部分 基础篇  第1章 Web编程概述  第2章 建立开发环境  第3章 C#编程基础  第4章 强大的NET类库  第5章 数据库基础  第6章 快速入门...

    Programming.ASP.NET.中文版(第3版).part3.rar

    ASP.NET中的配置和部署选项;一个数据库设计快速指南的附录。 本书对于ASP.NET 2.0技术和Visual Studio 2005进行了全面讲解,出色地囊括了读者在实际编程中会用到的ASP.NET的重要特性,十分适合初中级读者。 本...

    Programming.ASP.NET.中文版(第3版).part2.rar

    ASP.NET中的配置和部署选项;一个数据库设计快速指南的附录。 本书对于ASP.NET 2.0技术和Visual Studio 2005进行了全面讲解,出色地囊括了读者在实际编程中会用到的ASP.NET的重要特性,十分适合初中级读者。 本...

    Programming.ASP.NET.中文版(第3版).part1.rar

    ASP.NET中的配置和部署选项;一个数据库设计快速指南的附录。 本书对于ASP.NET 2.0技术和Visual Studio 2005进行了全面讲解,出色地囊括了读者在实际编程中会用到的ASP.NET的重要特性,十分适合初中级读者。 本...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    2.ASP.NET.2.0.高级编程(第4版) [1/7] 原书名: Professional ASP.NET 2.0 原出版社: Wrox 作者:(美)Bill Evjen, Scott Hanselman, Farhan Muhammad [同作者作品] [作译者介绍] 译者: 李敏波[同译者作品] ...

    ASP.NET.3.5.SP1高级编程6e.part2.rar

    本书首先介绍如何使用JavaScript核心库和ASP.NET AJAX Toolki t,然后介绍如何调试、部署和开发定制的控件,并介绍了如何使用ASP.NET 3.5 AJA X特性创建功能丰富、响应迅速的动态网站,从而帮助读者透彻地理解ASP...

    ASP.NET.3.5.SP1高级编程6e.part3.rar

    本书首先介绍如何使用JavaScript核心库和ASP.NET AJAX Toolki t,然后介绍如何调试、部署和开发定制的控件,并介绍了如何使用ASP.NET 3.5 AJA X特性创建功能丰富、响应迅速的动态网站,从而帮助读者透彻地理解ASP...

    ASP.NET.3.5.SP1高级编程6e.part1.rar

    本书首先介绍如何使用JavaScript核心库和ASP.NET AJAX Toolki t,然后介绍如何调试、部署和开发定制的控件,并介绍了如何使用ASP.NET 3.5 AJA X特性创建功能丰富、响应迅速的动态网站,从而帮助读者透彻地理解ASP...

    微软开源的SignalR .Net客户端实现ASP.NET SignalR.zip

    ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    18.2.2 使用Web部署 18.2.3 通过FTP部署 18.3 管理网站 18.3.1 创建新站点 18.3.2 创建虚拟目录 18.3.3 使用VirtualPathProvider 18.3.4 使用应用程序池 18.3.5 使用应用程序预热 18.4 扩展集成...

    ASP.NET 高级编程 part2 pdf

    内容涵盖了ASP.NET和NET Framework原理,如何创建ASP.NET页面和使用服务器控件,数据处理以及ADO.NET,ASP.NET类库,配置和部署问题,作为数据处理的有机组成部分的XML技术,如何使用Web服务为应用程序提供异步...

    ASP.NET 中文版(第3版).part1

    ASP.NET 中文版(第3版).part1 第1章: ASP.NET 2.0 第2章: Visual Studio 2005 第3章: 控件:基本概念 第4章: 基本控件 第5章: 高级控件 第6章: 网站基础 第7章: 跟踪. 调试和错误处理 第8章: 验证 第9章: ...

    Programming ASP.NET 中文版(第3版).part2

    Programming ASP.NET 中文版(第3版)(part2) &lt;br&gt;本书主要介绍.NET平台和ASP.NET;HTML编程基础;比较ASP和ASP.NET;ASP.NET中的事件; 比较HTML控件和ASP控件;基本的ASP控件API;代码隐藏窗体;使用Visual ...

    ASP.NET 高级编程 part1 pdf

    内容涵盖了ASP.NET和NET Framework原理,如何创建ASP.NET页面和使用服务器控件,数据处理以及ADO.NET,ASP.NET类库,配置和部署问题,作为数据处理的有机组成部分的XML技术,如何使用Web服务为应用程序提供异步...

    ASP.NET 高级编程 part3 pdf

    内容涵盖了ASP.NET和NET Framework原理,如何创建ASP.NET页面和使用服务器控件,数据处理以及ADO.NET,ASP.NET类库,配置和部署问题,作为数据处理的有机组成部分的XML技术,如何使用Web服务为应用程序提供异步...

    Programming ASP.NET 中文版 (第3版) pdf Part06

    ASP.NET中的配置和部署选项;一个数据库设计快速指南的附录。 本书对于ASP.NET 2.0技术和Visual Studio 2005进行了全面讲解,出色地囊括了读者在实际编程中会用到的ASP.NET的重要特性,十分适合初中级读者。

    Programming ASP.NET 中文版(第3版).part1

    Programming ASP.NET 中文版(第3版)(part1) &lt;br&gt;本书主要介绍.NET平台和ASP.NET;HTML编程基础;比较ASP和ASP.NET;ASP.NET中的事件; 比较HTML控件和ASP控件;基本的ASP控件API;代码隐藏窗体;使用Visual ...

    Programming ASP.NET中文版(第3版) pdf part3

    本书主要介绍.net平台和asp.net;...比较asp和asp.net;asp.net中的事件;...基本的asp控件apl;代码隐藏窗体:使用visual studio.net集成开发环境:跟踪,调试...asp.net中的配置和部署选项:一个数据库设计快速指南的附录。

Global site tag (gtag.js) - Google Analytics