演练:使用 XCOPY 部署 ASP.NET Web 应用程序

更新:2007 年 11 月

部署 ASP.NET 应用程序非常简单。您需要将所创建的应用程序文件从开发计算机复制到将承载应用程序的成品 Web 服务器。可以使用 XCOPY 命令行工具或喜欢的 FTP 应用程序,将文件从一个位置复制到另一个位置。有关常规部署的更多信息,请参见 .NET Framework 部署基础

f735abw9.alert_note(zh-cn,VS.90).gif说明:

除了使用所有版本的 .NET Framework 都支持的 XCOPY 命令行工具以外,还可以使用新的 .NET Framework 2.0 工具来编译和部署您的 Web 应用程序,这个新的工具位于 %SystemRoot%\Microsoft.NET\Framework\版本 2 或更高版本\Aspnet_compiler.exe。有关更多信息,请参见 ASP.NET 编译工具 (Aspnet_compiler.exe)

对于希望在 Web 应用程序之间共享的程序集(如包含自定义 ASP.NET 服务器控件的程序集),应将其部署到远程服务器上的全局程序集缓存 (GAC)。

如果部署的应用程序包含对某个自定义组件的引用,该组件在本地服务器的全局程序集缓存中注册,则不会将该组件与该应用程序一起部署到远程服务器。需要在远程服务器的全局程序集缓存中安装该组件,也可以在部署之前将该组件复制到本地 Web 应用程序的 Bin 文件夹中。

有关更多信息,请参见全局程序集缓存。有关程序集的更多信息,请参见使用程序集编程

某些开发工具(如 Visual Web Developer)可以使应用程序的部署较为容易。有关更多信息,请参见演练:发布网站演练:发布网站演练:通过使用“发布网站”工具部署网站项目.

先决条件

若要完成本演练,您需要:

  • .NET Framework。

  • 现有的 ASP.NET 网站。如果已经配置了这样一个站点,则可以将其作为本演练的起点。否则,若要查看有关创建虚拟目录或站点的详细信息,请参见 如何:在 IIS 5.0 和 6.0 中创建和配置虚拟目录

  • 可使用文件路径或 UNC 路径访问的目标。

f735abw9.alert_note(zh-cn,VS.90).gif说明:

本演练假定您未使用设计器,如 Visual Web Developer 或 Visual Studio。

准备

如果您正在部署大型网站并希望目标网站在您复制文件时脱机,可以使用以下步骤。

在部署之前使 Web 应用程序脱机

  1. 创建一个名为 App_offline.htm 的文件,并将其放在目标网站的根中。

  2. 在 App_offline.htm 文件中放入一条友好消息,让客户端知道您正在更新站点。

    当 App_offline.htm 文件存在时,对网站的任何请求都将重定向到该文件。

    f735abw9.alert_caution(zh-cn,VS.90).gif重要说明:

    请记住在文件复制完毕后删除 App_offline.htm 文件。

如果某些文件类型和文件夹发生了更改,应用程序域将重新启动。可以配置重新启动应用程序域之前应用程序等待另一次文件更改通知的秒数。

使应用程序域重新启动的次数最少

  1. 打开 Web 应用程序的 Web.config 文件。如果没有 Web.config 文件,可以使用以下代码创建该文件。

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
      </system.web>
    </configuration>
    

    有关更多信息,请参见 ASP.NET 配置文件

  2. 向 Web.config 文件添加一个 httpRuntime 元素(ASP.NET 设置架构) 元素,并将 waitChangeNotification 属性设置为超过以下时间的任意秒数,该时间为更新两个文件复制更改通知之间的时间。例如,您的 httpRuntime 元素可能类似于以下代码。

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
        <httpRuntime       waitChangeNotification="5"    />
      </system.web>
    </configuration>
    
  3. 向 httpRuntime 元素添加一个 maxWaitChangeNotification 属性,并将该属性设置为从第一个文件更改通知开始到重新启动应用程序域之前等待的最大秒数。将该属性设置为一个超过完成任何文件复制过程所需时间的数值。根据此属性和 waitChangeNotification 属性的值来合并文件更改通知。例如,您的 httpRuntime 元素可能类似于以下代码。

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
        <httpRuntime 
          waitChangeNotification="5"
          maxWaitChangeNotification="10"
        />
      </system.web>
    </configuration>
    

使用 XCOPY 从命令行部署 ASP.NET Web 应用程序

  1. 单击**“开始”,然后单击“运行”**。

  2. 在**“运行”对话框的“打开”框中,键入 cmd,然后单击“确定”**。

  3. 在命令提示处,键入下列命令:

    xcopy /I /S<source path> <destination path>
    

    在此命令中,<source path> 是 Web 应用程序的完整路径,而 <destination path> 是应用程序将部署到的目录的完整路径。

    f735abw9.alert_note(zh-cn,VS.90).gif说明:

    对于 XCOPY 工具,必须使用物理目录名。不能使用虚拟目录名。

    /S 参数复制所有子目录及其包含的文件。

    /I 参数指示复制一个目录。如果目标文件夹不存在,XCOPY 将创建一个目标文件夹。

    下面的命令示例将 c:\inetpub\wwwroot\devapp 目录下的所有文件复制到 d:\publicsites\liveapp 目录下。

    Xcopy /I /Sc:\inetpub\wwwroot\devapp d:\publicsites\liveapp
    
  4. 该命令可能会暂停以等待您回答问题,例如“是否覆盖 文件名(是/否/全部)?”,您可以键入您的答案。

    可以使用 XCOPY /EXCLUDE 选项从复制操作中排除子目录、带特定文件扩展名的文件或特定的文件名。要了解更多信息和参数,可以在**“开始”菜单的“帮助和支持”窗口中查看“Xcopy”**,也可以在命令行键入 xcopy /?。

从命令行部署或更新 ASP.NET Web 应用程序中的单个文件

  1. 单击**“开始”,然后单击“运行”**。

  2. 在**“运行”对话框的“打开”框中,键入 cmd,然后单击“确定”**。

  3. 在命令提示处,键入下列命令:

    xcopy <source path> <destination path>
    

    在此命令中,<source path> 是要复制的源文件的完整路径,而 <destination path> 是要放置复制文件的目录的完整路径。

    下面的示例命令将一个驱动器上 \Bin 目录中的一个 DLL 复制到另一个驱动器上的 \Bin 目录下。

    Xcopy c:\inetpub\wwwroot\devapp\bin\sampleAssembly.dll d:\publicsites\liveapp\bin
    

    下面的示例命令将一个驱动器上 Bin 目录下的所有 DLL 文件复制到另一个驱动器上的 Bin 目录下。

    Xcopy c:\inetpub\wwwroot\devapp\bin\*.dll d:\publicsites\liveapp\bin
    
  4. 该命令可能会暂停以等待您回答问题,例如“是否覆盖 文件名(是/否/全部)?”,您可以键入您的答案。

请参见

任务

演练:开发和使用自定义服务器控件

演练:在 IIS 6.0 中创建 ASP.NET Web 应用程序的根目录

概念

ASP.NET 网站布局

XML Web services 发布和部署

其他资源

创建 ASP.NET 网站

部署 .NET Framework 应用程序