zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python实现的列表操作
    python的静态方法
    python标准库学习2
    javascript继承原型继承的例子
    jQuery高亮显示文本中重要的关键字
    表格展开伸缩
    jQuery设计思想
    python标准库学习3
    python中的继承和抽象类的实现
    表格的变色问题
  • 原文地址:https://www.cnblogs.com/SkySoot/p/2993665.html
Copyright © 2011-2022 走看看