ASP.NET 部署概述
更新:2007 年 11 月
在部署某网站后,可以将该网站部署到用于测试的 Web 服务器(测试服务器)或部署到用户可以使用该网站的服务器(成品服务器)。您可以采取几种方式来部署网站,包括对其进行预编译。
本主题包括:
方案
部署功能。
背景
代码示例
方案
在 Visual Studio 中开发网站后,您可以选择下列部署方法之一:
通过使用 Visual Studio 中的工具将网站中的文件复制到目标服务器。
预编译站点,并将输出文件复制到您指定的位置,如成品服务器。
返回页首
功能
Visual Studio 为部署网站提供了下列选项:
“复制网站”工具,该工具将当前网站复制到目标服务器。
“发布网站”实用工具,该工具将网站编译为一组可执行文件。然后,可以使用所选的任何方法将这些文件复制到目标服务器。
说明: Microsoft Visual Web Developer 速成版中未提供“发布网站”实用工具。
返回页首
背景
Visual Studio 提供了“复制网站”工具,该工具将当前网站的文件复制到目标服务器。它还提供了“发布网站”实用工具,该工具将网站编译为一组可执行文件。然后,使用所选的任何方法将这些文件复制到目标服务器。
说明: |
---|
另外还可以使用 Web 应用程序项目创建网站。在 Web 应用程序项目中,将所有类文件编译到单个程序集中。有关更多信息,请参见 Web 应用程序项目概述。 |
除了创建网站并将其部署到目标服务器之外,还可以创建文件传输协议 (FTP) 网站。在这种情况下,可以直接在目标服务器上创建和编辑文件。这是在托管服务器上处理网站的一种简便方法。
“复制网站”工具
“复制网站”工具类似于 FTP 实用工具。可以打开目标服务器上的文件夹,然后在当前网站和目标网站之间上载和下载文件。“复制网站”工具支持同步功能,该功能同时检查两个网站中的文件并自动确保两个网站都有最新版本的文件。
说明: |
---|
如果目标服务器是 FTP 服务器,则可以通过创建一个 FTP 网站打开和编辑服务器上的文件。有关更多信息,请参见部署了 FTP 的网站。 |
“复制网站”工具支持下面的功能:
可以将源文件(包括 .aspx 文件和类文件)复制到目标服务器。在这种情况下,网页是在被请求时动态编译的。
可以从 Visual Studio 所支持的任何类型的网站中打开和复制文件。其中包括本地 Internet 信息服务 (IIS)、远程 IIS 和 FTP 网站。目标服务器不需要 FrontPage 服务器扩展。
同步功能同时检查两个网站中的文件并自动确保两个网站都有最新版本的文件。
在复制应用程序文件之前,“复制网站”工具将名为 App_offline.htm 的文件放置在目标网站的根目录中。当 App_offline.htm 文件存在时,对网站的任何请求都将重定向到该文件。该文件显示一条友好消息,让客户端知道正在更新网站。复制完所有网站文件后,“复制网站”工具从目标网站删除 App_offline.htm 文件。
“发布网站”实用工具
“发布网站”实用工具预编译网站的内容,包括网页(.aspx 文件)和代码。该工具然后将输出文件复制到您指定的目录或服务器位置。可以作为预编译过程的一部分直接发布。也可以在本地预编译,然后自己复制文件。“发布网站”实用工具编译网站并从文件中去除源代码,从而只保留页和已编译程序集的存根文件。在用户请求页时,ASP.NET 用预编译的程序集执行请求。
说明: |
---|
Microsoft Visual Web Developer 速成版中未提供“发布网站”实用工具。 |
Web 应用程序项目
作为使用“发布网站”实用工具的替代方法,可以使用 Web 应用程序项目来创建网站。在 Web 应用程序项目中,将所有类文件编译到单个程序集中。只有此程序集必须与 .aspx 和 .ascx 文件以及其他静态内容文件一起进行部署。(此 Web 应用程序项目模型与 Visual Studio .NET 2003 使用的模型类似。)在此模型中,只有在浏览器中运行 .aspx 文件时才会编译这些文件。有关 Web 应用程序项目的更多信息,请参见 Web 应用程序项目概述。
选择部署工具
选择“复制网站”工具还是选择“发布网站”实用工具取决于您使用和维护站点的方式。
选择“复制网站”工具
使用“复制网站”工具的优点如下:
只需将文件从网站复制到目标计算机即可完成部署。
可以使用 Visual Studio 所支持的任何连接协议部署到目标计算机。可以复制到网络中的其他计算机上的共享文件夹。可以使用 FTP 复制到服务器,或使用 HTTP 协议复制到支持 FrontPage 服务器扩展的服务器。
可以直接在服务器上更改网页或修复网页中的错误。
如果使用的是其文件存储在中央服务器中的项目,则可以使用同步功能确保文件的本地和远程版本保持同步。
使用“复制网站”工具的缺点如下:
- 站点是按原样复制的。因此,如果任何文件包含编译错误,则直到有人(也许是用户)运行引发该错误的网页时才会发现该错误。
择“发布网站”实用工具
使用“发布网站”实用工具的优点如下:
预编译过程可帮助您发现编译时错误及 Web.config 文件和其他非代码文件中的潜在错误。
从网站中移除了源代码,还可选择移除 ASP.NET Web 文件中的标记和用户控件。这提供了保护知识产权的措施并使其他人更难访问站点的源代码。
由于站点中的页已经编译过,因此在最初请求时无需对其进行动态编译。这可以减少网页的初始响应时间。(在动态编译网页时,将为后续请求缓存输出。)
使用“发布网站”实用工具的缺点如下:
根据所指定的发布选项的不同,在对站点进行更改后可能需要重新编译该站点。因此,在开发站点并频繁更改网页的过程中,使用“发布网站”实用工具可能不可行。
“发布网站”实用工具无法将已编译的站点部署到远程服务器。它只能复制到本地计算机或局域网中的其他计算机。
说明: “发布网站”实用工具会覆盖目标文件夹及任何子文件夹中的文件。请确保发布到可以安全地删除现有内容的位置。
使用“复制网站”工具
使用“复制网站”工具可将文件从本地计算机移到测试服务器或成品服务器上。“复制网站”工具在无法从远程站点打开文件以进行编辑的情况下特别有用。可以使用“复制网站”工具将文件复制到本地计算机上,在编辑这些文件后将它们重新复制到远程站点。还可以在完成开发后使用该工具将文件从测试服务器复制到成品服务器。
说明: |
---|
如果复制的应用程序包含对在 GAC 中注册的自定义组件的引用,则该组件不会随应用程序一起复制。有关更多信息,请参见如何:在网站中添加对某个 .NET 或 COM 组件的引用。 |
源站点和远程站点
“复制网站”工具在“源站点”和“远程站点”之间复制文件。这两个术语用于区分该工具所处理的两个站点。这些术语在使用时具有如下含义:
源站点 源站点是当前已在 Visual Studio 中打开的站点。
远程站点 远程站点是要将文件复制到的站点。远程站点可以是能用 FrontPage 服务器扩展或 FTP 访问的另一台计算机上的某个位置。在这些情况下,站点是真正意义上的远程站点。但是,远程站点也可以是您自己的计算机上的另一个站点。例如,可以从计算机上的文件系统网站发布到位于同一计算机上的本地 IIS 网站。在这种情况下,虽然该站点对于您的计算机是本地的,但当您使用“复制网站”工具时它是远程站点。
注意,源站点不必然是复制操作的来源位置。您可以从远程站点向源站点复制内容。
同步站点
同步操作会检查本地站点和远程站点上的文件,并确保两个站点上的所有文件都是最新的。例如,如果远程站点上的某个文件比源站点上同一文件的版本更新,同步文件功能会将远程站点上的文件复制到源站点。
“复制网站”工具不会合并名称相同但内容不同的文件。在这种情况下,同步过程让您指定要保留哪个版本的文件。
同步功能使该工具适合用于多开发人员环境,在这种环境中,开发人员在其本地计算机上保留网站的副本。各个开发人员可将其最新的更改复制到共享远程服务器。同时,他们可以用其他开发人员提供的更改后的文件更新其本地计算机。新加入的项目开发人员可以迅速获取网站所有文件的副本。为此,他们可以在本地计算机上创建一个本地网站,然后与共享服务器上的站点进行同步。
文件状态
为了同步文件,“复制网站”工具需要有关两个站点上文件的状态信息。因此,该工具维护文件的时间戳以及执行同步所需的其他信息等。例如,该工具维护文件的上次检查时间的列表,借此确定诸如某文件是否已被删除等信息。
当连接到站点或刷新站点时,该工具比较两个站点上的文件的时间戳以及该工具为两个站点存储的信息。然后报告每个文件的状态。下表显示了文件的状态。
状态 |
说明 |
---|---|
Unchanged |
文件自上次复制后未曾更改。 |
Changed |
文件的时间戳比上次复制该文件时所获取的时间戳要新。 |
New |
文件自上次复制站点后已被添加。 |
Deleted |
文件自上次复制站点后已被移除。如果在“复制网站”工具中选择“显示删除的文件”,则该文件所对应的项会显示在窗口中。 |
使用“发布网站”实用工具
使用“发布网站”实用工具可以发布网站。该过程包括编译站点并将输出文件复制到您指定的位置,如成品服务器。
说明: |
---|
Visual Web Developer 速成版中未提供“发布网站”实用工具。 |
发布完成以下任务:
将 App_Code 文件夹中的页、源代码等预编译到可执行输出中。
将可执行输出写入目标文件夹。
说明: 发布包含对自定义组件(该组件在 GAC 中注册)的引用的应用程序时,组件将不与应用程序一起发布。有关更多信息,请参见如何:在网站中添加对某个 .NET 或 COM 组件的引用。
有关更多信息,请参见 ASP.NET 预编译概述。
预编译
发布的第一步是预编译网站。预编译执行的编译过程与通常在浏览器中首次请求页时发生的动态编译的编译过程相同。预编译过程从页生成程序集,包括标记和代码。它同时还编译 App_Code、App_GlobalResources、App_LocalResources 和 App_Themes 文件夹中的文件。
可以同时编译单文件 ASP.NET 页和代码隐藏页。有关这两种模型的信息,请参见 ASP.NET 网页代码模型。
发布中的预编译步骤与测试网站并在 Visual Studio 中生成网站时发生的编译有所不同。生成过程编译网站或当前页及所有依赖文件,然后运行它。生成过程是一种测试形式,不产生可部署的输出。与此相反,发布时的预编译在指定文件夹中创建输出,您可将此输出部署到成品服务器。
写入预编译的输出
预编译过程完成时,输出被写入您指定的文件夹中。通过使用文件传输协议 (FTP) 或 HTTP,可以将输出写入文件系统中可供访问的任何文件夹内。必须具有相应权限才能向目标网站写入。
说明: |
---|
发布过程只部署网站文件夹或子文件夹中的文件。而不部署 Machine.config 文件。因此,目标 Web 服务器的配置可能与您计算机上的配置不同。这可能会影响应用程序的行为。 |
您可以在临时服务器或成品服务器上指定目标文件夹,也可以将输出写入本地计算机上的文件夹中。如果在成品服务器上指定了文件夹,则可在一个步骤中预编译并部署。如果将输出写入不属于网站的文件夹中,则可以在单独的步骤中将输出复制到服务器上。
说明: |
---|
如果使用 Visual Studio 打开预编译的网站,则将无法生成该网站。将关闭生成选项。若要更改已发布的网站,请在原始网站中编辑文件,预编译该站点,然后重新发布它。 |
预编译过程的输出包括所有代码或页的已编译程序集。如果选择允许更新预编译网站的选项,则 .aspx、.asmx 和 .ashx 文件的所有代码隐藏类都将编译到程序集中。但是,.aspx、.asmx 和 .ashx 文件本身将按原样复制到目标文件夹中,以便在部署网站后对这些文件的布局进行更改。对于可更新的预编译网站,单文件页中的代码不编译到程序集中,而是作为源代码部署。
不编译静态文件。相反,它们按原样复制到输出文件夹中。静态文件包括图形、.htm 或 .html 文件、文本文件等。
如果预编译期间发生错误,则将在**“输出”窗口及“错误列表”**窗口中报告。预编译期间发生的错误会阻止网站的编译和发布。
返回页首
代码示例
返回页首
请参见
概念
参考
返回页首