使用 FTP 客户端部署站点 (C#)

作者 :Scott Mitchell

下载 PDF

部署 ASP.NET 应用程序的最简单方法是手动将所需的文件从开发环境复制到生产环境。 本教程演示如何使用 FTP 客户端将文件从桌面获取到 Web 主机提供程序。

简介

上一教程介绍了一个简单的 Book Review ASP.NET Web 应用程序,该应用程序由少量 ASP.NET 页、母版页、自定义基 Page 类、大量图像和三个 CSS 样式表组成。 现在,我们已准备好将此应用程序部署到 Web 主机提供程序,此时,任何连接到 Internet 的人都可以访问该应用程序!

根据 确定需要部署的文件 教程中的讨论,我们知道需要将哪些文件复制到 Web 主机提供程序。 (回想一下,复制哪些文件取决于应用程序是显式编译还是自动编译。) 但是,我们如何从开发环境 (桌面) 获取文件, (由 Web 主机提供程序) 管理的 Web 服务器的生产环境? F ile T ransfer P rotocol (FTP) 是一种常用的协议,用于通过网络将文件从一台计算机复制到另一台计算机。 另一个选项是 frontPage Server Extensions (FPSE) 。 本教程重点介绍如何使用独立的 FTP 客户端软件将必要的文件从开发环境部署到生产环境。

注意

Visual Studio 包括用于通过 FTP 发布网站的工具;下一教程将介绍这些工具以及使用 FPSE 的工具。

若要使用 FTP 复制文件,需要在开发环境中使用 FTP 客户端 。 FTP 客户端是一种应用程序,旨在将文件从安装的计算机复制到运行 FTP 服务器的计算机。 (如果 Web 主机提供程序像大多数一样支持通过 FTP 进行文件传输,则其 Web 服务器上运行 FTP 服务器。) 有许多 FTP 客户端应用程序可用。 Web 浏览器甚至可以兼作 FTP 客户端。 我最喜欢的 FTP 客户端(也是本教程将使用的客户端)是 FileZilla,这是一个适用于 Windows、Linux 和 Mac 的免费开源 FTP 客户端。 不过,任何 FTP 客户端都将正常工作,因此请随意使用你最熟悉的任何客户端。

如果继续操作,则需要先使用 Web 主机提供商创建一个帐户,然后才能完成本教程或后续教程。 如上一教程中所述,有许多 Web 主机提供商公司具有广泛的价格、功能和服务质量。 对于本教程系列,我将使用 Discount ASP.NET 作为我的 Web 主机提供程序,但你可以随任何 Web 主机提供程序一起操作,只要它们支持开发网站时使用的 ASP.NET 版本。 (这些教程是使用 ASP.NET 3.5.) 创建的,因为我们将在本教程中使用 FTP 将文件复制到 Web 主机提供程序,在将来的 Web 主机提供程序中,Web 主机提供程序必须支持对其 Web 服务器的 FTP 访问。 几乎所有 Web 主机提供商都提供此功能,但你应该在注册之前双重检查。

部署 Book Review Web 应用程序项目

回想一下,Book Review Web 应用程序有两个版本:一个使用 Web 应用程序项目模型 (BookReviewsWAP) 实现,另一个使用网站项目模型 (BookReviewsWSP) 。 项目类型会影响网站是自动编译还是显式编译,而编译模型决定了需要部署哪些文件。 因此,我们将检查从 BookReviewsWAP 开始单独部署 BookReviewsWAP 和 BookReviewsWSP 项目。 请花点时间下载这两个 ASP.NET 应用程序(如果尚未下载)。

通过导航到 BookReviewsWAP 文件夹并双击 BookReviewsWAP.sln 文件来启动 BookReviewsWAP 项目。 在部署项目之前,请务必生成该项目,以确保对源代码所做的任何更改都包含在编译的程序集中。 若要生成项目,请转到“生成”菜单,然后选择“生成书籍”“视图”“WAP”菜单选项。 这会将项目中的源代码编译为单个程序集 ,该程序集 BookReviewsWAP.dll位于 Bin 文件夹中。

现在,我们已准备好部署必要的文件! 启动 FTP 客户端并连接到 Web 主机提供商处的 Web 服务器。 (当你注册 Web 托管公司时,他们将通过电子邮件发送有关如何连接到 FTP 服务器的信息;这包括 FTP 服务器的地址以及用户名和密码。)

将以下文件从桌面复制到 Web 主机提供商处的根网站文件夹。 通过 FTP 登录到 Web 主机提供程序的 Web 服务器时,很可能位于根网站目录中。 但是,某些 Web 主机提供程序具有名为 或 wwwrootwww子文件夹,用作网站文件的根文件夹。 最后,在 FTPing 文件时,可能需要在生产环境中创建相应的文件夹结构 - Bin 文件夹、FictionImages文件夹、文件夹等。

  • ~/Default.aspx
  • ~/About.aspx
  • ~/Site.master
  • ~/Web.config
  • ~/Web.sitemap
  • 文件夹的完整内容Styles
  • 文件夹 (及其子文件夹的完整内容 ImagesBookCovers)
  • ~/Fiction/Default.aspx
  • ~/Fiction/Blaze.aspx
  • ~/Tech/Default.aspx
  • ~/Tech/CYOW.aspx
  • ~/Tech/TYASP35.aspx
  • ~/Bin/BookReviewsWAP.dll

图 1 显示了复制必要文件后的 FileZilla。 FileZilla 左侧显示本地计算机上的文件,右侧显示远程计算机上的文件。 如图 1 所示,ASP.NET 源代码文件(如 About.aspx.cs)位于开发环境) (本地计算机上,但未复制到 Web 主机提供程序 (生产环境) 因为使用显式编译时不需要部署代码文件。

注意

在生产服务器上拥有源代码文件没有坏处,因为它们会被忽略。 默认情况下,ASP.NET 禁止对源代码文件的 HTTP 请求,以便即使源代码文件存在于生产服务器上,也无法访问网站的访问者。 (也就是说,如果用户尝试访问 http://www.yoursite.com/Default.aspx.cs ,他们将收到一个错误页面,说明禁止这些类型的文件- .cs 文件。)

FileZilla FTP 客户端的屏幕截图,其中显示某些 ASP.Net 源代码文件未复制到远程服务器。

图 1:使用 FTP 客户端将所需文件从桌面复制到 Web 主机提供程序处的 Web 服务器 (单击以查看全尺寸图像)

部署站点后,请花点时间测试站点。 如果已购买域名并正确配置 DNS 设置,可以通过输入域名访问站点。 或者,Web 主机提供商应已提供指向站点的 URL,该 URL 类似于 帐户名webhostprovider.comwebhostprovider.com/accountname。 例如,折扣 ASP.NET 帐户的 URL 为: http://httpruntime.web703.discountasp.net

图 2 显示了已部署的 Book Reviews 站点。 请注意,我在 Discount ASP 上查看它。NET 的服务器,位于 http://httpruntime.web703.discountasp.net。 此时,连接到 Internet 的任何人都可以查看我的网站! 正如我们所期望的,站点的外观和行为与在开发环境中测试它时一样。

注意

如果在查看应用程序时遇到错误,请花点时间确保部署了正确的文件集。 接下来,检查错误消息,以查看它是否显示有关问题的任何线索。 之后,你可以求助于 Web 主机公司的支持人员,或将问题发布到 ASP.NET 论坛上的相应论坛。

书评网站现在可供具有 Internet 连接的任何人访问

图 2:具有 Internet 连接的任何人都可以访问书评网站 (单击以查看全尺寸图像)

部署书评网站项目

部署使用自动编译的 ASP.NET 应用程序(如 BookReviewsWSP 网站项目)时,文件夹中没有已编译的程序集 Bin 。 因此,必须将 Web 应用程序的源代码文件部署到生产环境。 让我们逐步完成此过程。

与 Web 应用程序项目一样,最好先生成应用程序,然后再部署它。 虽然生成网站项目不会创建程序集,但它对页面中的任何编译时错误检查。 最好现在查找这些错误,而不是让站点的访问者为你发现它们!

成功生成项目后,使用 FTP 客户端将以下文件复制到 Web 主机提供程序的根网站文件夹。 可能需要在生产环境中创建相应的文件夹结构。

注意

如果已部署 BookReviewsWAP 项目,但仍想尝试部署 BookReviewsWSP 项目,请先删除 Web 服务器上在部署 BookReviewsWAP 时上传的所有文件,然后为 BookReviewsWSP 部署文件。

  • ~/Default.aspx
  • ~/Default.aspx.cs
  • ~/About.aspx
  • ~/About.aspx.cs
  • ~/Site.master
  • ~/Site.master.cs
  • ~/Web.config
  • ~/Web.sitemap
  • 文件夹的完整内容Styles
  • 文件夹 (及其子文件夹的完整内容 ImagesBookCovers)
  • ~/App_Code/BasePage.cs
  • ~/Fiction/Default.aspx
  • ~/Fiction/Default.aspx.cs
  • ~/Fiction/Blaze.aspx
  • ~/Fiction/Blaze.aspx.cs
  • ~/Tech/Default.aspx
  • ~/Tech/Default.aspx.cs
  • ~/Tech/CYOW.aspx
  • ~/Tech/CYOW.aspx.cs
  • ~/Tech/TYASP35.aspx
  • ~/Tech/TYASP35.aspx.cs

图 3 显示了复制所需文件后的 FileZilla。 可以看到,ASP.NET 源代码文件(如 About.aspx.cs)同时存在于本地计算机 (开发环境) 和 Web 主机提供程序 (生产环境) 因为使用自动编译时需要部署代码文件。

FileZilla FTP 客户端窗口的屏幕截图,其中显示了 ASP.Net 源代码文件已成功上传到服务器。

图 3:使用 FTP 客户端将所需文件从桌面复制到 Web 主机提供程序处的 Web 服务器 (单击以查看全尺寸图像)

用户体验不受应用程序的编译模型的影响。 相同的 ASP.NET 页面是可访问的,无论网站是使用 Web 应用程序项目模型还是网站项目模型创建的,它们的外观和行为都相同。

在生产环境中更新 Web 应用程序

Web 应用程序的开发和部署不是一次性过程。 例如,在创建书评网站时,我构建了各种页面,并在个人计算机上编写了随附的代码 (开发环境) 。 达到某种稳定状态后,我部署了我的应用程序,以便其他人可以访问该网站并阅读我的评论。 但部署并不标志着我在此网站上开发的结束。 我可能会添加更多书评或实现新功能,例如允许我的访问者评价书籍或留下自己的评论。 此类增强功能将在开发环境中开发,完成后需要部署。 因此,开发和部署是周期性的。 开发应用程序,然后部署它。 当站点处于实时状态并处于生产状态时,会添加新功能并随着时间的推移修复 bug,这需要重新部署应用程序。 等等。

如你所料,重新部署 Web 应用程序时,只需复制新的和更改的文件。 无需重新部署未更改的页面或服务器或客户端支持文件 (,尽管这样做不会) 造成损害。

注意

使用显式编译时需要记住的一点是,每当向项目添加新 ASP.NET 页或进行任何与代码相关的更改时,都需要重新生成项目,从而更新文件夹中的 Bin 程序集。 因此,在生产 (上更新 Web 应用程序以及其他新的和更新的内容) 时,需要将此更新的程序集复制到生产环境。

另请注意,对 Web.config 目录中的 或 文件 Bin 所做的任何更改会停止并重启网站的应用程序池。 如果使用默认) (模式存储 InProc 会话状态,则每当修改这些密钥文件时,站点的访问者都将失去其会话状态。 若要避免此陷阱,请考虑使用 StateServerSQLServer 模式存储会话。 有关本主题的详细信息,请阅读 会话状态模式

最后,请记住,重新部署应用程序可能需要几秒钟到几分钟的时间,具体取决于需要复制到生产环境的文件的数量和大小。 在此期间,访问您的网站的用户可能会遇到错误或奇怪的行为。 可以通过将名为 App_Offline.htm 的页面添加到应用程序的根目录来“关闭”整个应用程序,该目录向用户说明站点已关闭进行维护 (或任何) ,并会很快备份。 App_Offline.htm如果存在该文件,ASP.NET 运行时会将所有传入的请求重定向到该页。

总结

部署 Web 应用程序需要将必要的文件从开发环境复制到生产环境。 通过网络传输文件的最常见方法是文件传输协议 (FTP) ,大多数 Web 主机提供程序支持对其 Web 服务器的 FTP 访问。 本教程介绍了如何使用 FTP 客户端将所需文件部署到 Web 服务器。 部署后,任何连接到 Internet 的人都可以访问该网站!

编程快乐!

深入阅读

有关本教程中讨论的主题的详细信息,请参阅以下资源: