使用 Visual Studio 或 Visual Web Developer 通过SQL Server Compact部署 ASP.NET Web 应用程序:部署到生产环境 - 第 7 个,共 12 个

作者 :Tom Dykstra

下载初学者项目

本系列教程介绍如何使用 Visual Studio 2012 RC 或 Visual Studio Express 2012 RC for Web 部署 (发布) 包含 SQL Server Compact 数据库的 ASP.NET Web 应用程序项目。 如果安装 Web 发布更新,也可以使用 Visual Studio 2010。 有关该系列的简介,请参阅 该系列中的第一个教程

有关演示 Visual Studio 2012 RC 版本后引入的部署功能的教程,演示如何部署除 SQL Server Compact 以外的SQL Server版本,以及如何部署到 Azure 应用服务 Web 应用,请参阅使用 Visual Studio ASP.NET Web 部署

概述

在本教程中,你将使用托管提供商设置帐户,并使用 Visual Studio 一键式发布功能将 ASP.NET Web 应用程序部署到生产环境。

提醒:如果在完成本教程时收到错误消息或某些内容不起作用,请务必检查故障排除页面

选择托管提供程序

对于 Contoso University 应用程序和本系列教程,需要一个支持 ASP.NET 4 和 Web 部署的提供程序。 选择了特定的托管公司,以便教程可以说明部署到实时网站的完整体验。 每个托管公司提供不同的功能,部署到其服务器的体验会有所不同。 但是,本教程中所述的过程是整个过程的典型过程。 本教程使用的托管提供程序(Cytanium.com)是众多可用提供程序之一,在本教程中使用不构成认可或建议。

准备好选择自己的托管提供商时,可以比较 Microsoft.com/web 网站上的 提供商库中 的功能和价格。

创建帐户

在所选提供商处创建帐户。 如果对完整SQL Server数据库的支持是额外的额外支持,则无需在本教程中选择它,但在本系列后面的迁移到SQL Server教程中需要它。

对于这些教程,无需注册新的域名。 可以使用提供程序分配给站点的临时 URL 进行测试以验证部署是否成功。

创建帐户后,通常会收到一封欢迎电子邮件,其中包含部署和管理站点所需的所有信息。 托管提供商发送给你的信息将类似于此处显示的信息。 发送给新帐户所有者的 Cytanium 欢迎电子邮件包括以下信息:

  • 提供程序的控制面板网站的 URL,可在其中管理站点的设置。 你指定的 ID 和密码包含在欢迎电子邮件的此部分中,以便于参考。 (两者都已更改为此图的演示值。)

    Welcome_Email_Control_Panel_URL

  • 默认.NET Framework版本以及如何更改它的信息。 许多托管网站默认为 2.0,适用于面向 .NET Framework 2.0、3.0 或 3.5 的 ASP.NET 应用程序。 但是,Contoso University 是一个.NET Framework 4 应用程序,因此必须更改此设置。 (对于 ASP.NET 4.5 应用程序,请使用 .NET 4.0 设置.)

    Welcome_Email_Framework_Version

  • 可用于访问网站的临时 URL。 创建此帐户时,输入“contosouniversity.com”作为现有域名。 因此,临时 URL 为 http://contosouniversity.com.vserver01.cytanium.com

    Welcome_Email_Temporary_URL

  • 有关如何设置数据库以及访问数据库所需的连接字符串的信息:

    Welcome_Email_Database_Info

  • 有关用于部署站点的工具和设置的信息。 (来自 Cytanium 的电子邮件还提到 WebMatrix,此处省略了该内容。)

    Welcome_Email_Deploy_info

设置.NET Framework版本

Cytanium 欢迎电子邮件包含有关如何更改.NET Framework版本的说明的链接。 这些说明说明可以通过 Cytanium 控制面板完成此操作。 其他提供商的控制面板网站看起来不同,或者它们可能会指示你以不同的方式执行此操作。

转到控制面板 URL。 使用用户名和密码登录后,会看到控制面板。

Cytanium_Control_Panel

在“ 托管空间 ”框中,将指针悬停在“Web”图标上,然后从菜单中选择“ 网站 ”。

Cytanium_Control_Panel_selecting_Web_Sites

在“ 网站 ”框中,单击“ contosouniversity.com (创建帐户) 时使用的网站的名称。

Cytanium_Control_Panel_selecting_contosouniversity

在“ 网站属性” 框中,选择“ 扩展 ”选项卡。

Cytanium_Control_Panel_Extensions_tab

将 ASP.NET 从 2.0 集成管道 更改为 4.0 (集成管道) ,然后单击“ 更新”。

发布到宿主提供程序

来自托管提供商的欢迎电子邮件包括发布项目所需的所有设置,你可以手动将这些信息输入到发布配置文件中。 但你将使用一种更简单且不太容易出错的方法配置到提供程序的部署:下载 .publishsettings 文件并将其导入到发布配置文件中。

在浏览器中,转到 Cytanium 控制面板,选择“ Web ”,然后选择“ 网站”。

控制面板选择网站

选择 contosouniversity.com 网站。

控制面板选择 contosouniversity.com

选择“ Web 发布 ”选项卡。

控制面板 Web 发布选项卡

通过输入用户名和密码创建用于 Web 发布的凭据。 可以输入用于登录控制面板的相同凭据。 单击“启用”

控制面板创建发布凭据

单击 “下载此网站的发布配置文件”。

控制面板下载发布配置文件

当系统提示打开或保存文件时,请保存它。

保存发布配置文件

在 Visual Studio 的解决方案资源管理器中,右键单击 ContosoUniversity 项目,然后选择“发布”。 “ 发布 Web ”对话框将在“ 预览 ”选项卡上打开,其中选择了 “测试 配置文件”,因为这是你最后使用的配置文件。

选择“ 配置文件 ”选项卡,然后单击“ 导入”。

“发布 Web”向导的“导入”按钮

“导入发布设置” 对话框中,选择下载的 .publishsettings 文件,然后单击“ 打开”。 向导将前进到“连接”选项卡,其中填写了所有字段。

“发布 Web”向导的“连接”选项卡

.publishsettings 文件将网站的计划永久 URL 置于“目标 URL”框中,但如果尚未购买该域,请将 值替换为临时 URL。 对于此示例,URL 是 http://contosouniversity.com.vserver01.cytanium.com 此框的唯一用途是指定部署成功后浏览器将自动打开的 URL。 如果将其留空,唯一的后果是浏览器在部署后不会自动启动。

单击“ 验证连接” 以验证设置是否正确,并且你可以连接到服务器。 如前所述,绿色检查标记验证连接是否成功。

单击“验证连接”时,可能会看到“ 证书错误 ”对话框。 如果这样做,请验证服务器名称是否为预期名称。 如果是,请选择“ 保存此证书以供将来的 Visual Studio 会话 使用”,然后单击“ 接受”。 (此错误表示宿主提供商已选择避免为要部署到的 URL 购买 SSL 证书的费用。如果希望使用有效的证书建立安全连接,请联系托管提供商。)

证书错误

单击“下一步”。

“设置”选项卡的“数据库”部分中,输入为测试发布配置文件输入的相同值。 可以在下拉列表中找到所需的连接字符串。

  • SchoolContext 的连接字符串框中,选择 Data Source=|DataDirectory|School-Prod.sdf
  • “SchoolContext”下,选择“应用Code First 迁移”。
  • DefaultConnection 的连接字符串框中,选择 Data Source=|DataDirectory|aspnet-Prod.sdf
  • “DefaultConnection”下,将 “更新数据库” 保留为清除状态。

“发布 Web”向导的“设置”选项卡

单击“下一步”。

在“ 预览 ”选项卡中,单击“ 开始预览 ”以查看要复制的文件的列表。 你会看到之前在本地计算机上部署到 IIS 时看到的相同列表。

在发布之前,请更改配置文件的名称,以便应用Web.Production.config转换文件。 选择“ 配置文件 ”选项卡,然后单击“ 管理配置文件”。

发布 Web 向导管理配置文件

“编辑 Web 发布配置文件 ”对话框中,选择生产配置文件,单击“ 重命名”,并将配置文件名称更改为“生产”。 然后单击“关闭”

“编辑 Web 发布配置文件”对话框

单击“发布” 。

应用程序将发布到托管提供程序。 结果显示在“ 输出 ”窗口中。

部署后的输出窗口

浏览器会自动打开到你在“发布 Web”向导的“连接”选项卡上的“目标 URL”框中输入的 URL。 你看到的主页与在 Visual Studio 中运行网站时相同,只是标题栏中现在没有“ (测试) ”或“ (Dev) ”环境指示器。 这表示 Web.config 转换的环境指示器正常工作。

注意

如果标题中仍显示“ (Test) ”,请从 ContosoUniversity 项目中删除 obj 文件夹,然后重新部署。 在软件的预发行版本中,以前应用的转换文件 (Web.Test.config) 可能会再次应用,尽管使用的是生产配置文件。

Home_page_Prod

在运行导致数据库访问的页面之前,请确保 Elmah 能够记录发生的任何错误。

设置 Elmah 的文件夹权限

正如你记得本系列中上一教程中所述,必须确保应用程序对应用程序内 Elmah 存储错误日志文件的文件夹具有写入权限。 在计算机上本地部署到 IIS 时,需要手动设置这些权限。 在本部分中,你将了解如何在 Cytanium 中设置权限。 (某些托管提供商可能无法执行此操作;它们可能提供一个或多个具有写入权限的预定义文件夹。在这种情况下,必须修改应用程序以使用指定的 folders.)

可以在 Cytanium 控制面板中设置文件夹权限。 转到控制面板 URL 并选择“ 文件管理器”。

Cytanium_Control_Panel_with_File_Manager_selected

在“ 文件管理器 ”框中,选择 “contosouniversity.com ”,然后选择 “wwwroot ”以查看应用程序的根文件夹。 单击 Elmah 旁边的挂锁图标。

Cytanium_Control_Panel_File_Manager_at_root_folder

“文件/文件夹权限”窗口中,选中 contosouniversity.com 的“读取”和“写入”复选框,然后单击“设置权限”。

Cytanium_Control_Panel_File_Folder_Permissions_Elmah

通过引发错误并显示 Elmah 错误报告,确保 Elmah 对 Elmah 文件夹具有写入访问权限。 请求 学生xxx.aspx 等无效 URL。 如前所述,会看到 GenericErrorPage.aspx 页。 单击“ 注销” 链接,然后运行 Elmah.axd。 首先获取 “登录 ”页,该页验证 Web.config 转换是否成功添加了 Elmah 授权。 登录后,将看到显示刚刚导致的错误的报表。

Elmah.axd_Prod

在生产环境中进行测试

运行“ 学生 ”页。 应用程序首次尝试访问 School 数据库,这会触发Code First 迁移创建数据库。 当页面在片刻延迟后显示时,它显示没有学生。

Students_page_Prod

运行“ 讲师 ”页,验证种子数据是否已成功在数据库中插入讲师数据。

Instructors_page_Prod

与在测试环境中一样,你想要验证数据库更新在生产环境中是否正常工作,但通常不希望将测试数据输入到生产数据库中。 在本教程中,你将使用与测试相同的方法。 但在实际应用程序中,你可能想要找到一种方法来验证数据库更新是否成功,而无需将测试数据引入生产数据库。 在某些应用程序中,添加一些内容,然后删除它可能很实用。

添加学生,然后查看在“ 学生 ”页中输入的数据,以验证是否可以更新数据库中的数据。

Add_Students_page_Prod

Students_page_with_new_student_Prod

“课程”菜单中选择“更新额度”,验证授权规则是否正常工作。 将显示“ 登录 ”页。 输入管理员帐户凭据,单击“ 登录”,然后显示 “更新额度 ”页。

Log_In_page_Prod

如果登录成功,将显示 “更新额度 ”页。 这表示已成功部署具有单个管理员帐户) ASP.NET 成员资格数据库 (。

Update_Credits_page_Prod

现已成功部署和测试站点,可通过 Internet 公开访问站点。

创建更可靠的测试环境

部署到测试环境 教程中所述,最可靠的测试环境是托管提供商处的第二个帐户,就像生产帐户一样。 这比使用本地 IIS 作为测试环境更昂贵,因为必须注册第二个托管帐户。 但是,如果它可以防止生产站点错误或中断,你可能会认为值得付出代价。

创建和部署到测试帐户的大部分过程与部署到生产环境的过程类似:

  • 创建 Web.config 转换文件。
  • 在托管提供商处创建帐户。
  • 创建新的发布配置文件并部署到测试帐户。

阻止对测试站点的公共访问

测试帐户的一个重要注意事项是它将在 Internet 上直播,但你不希望公众使用它。 若要使网站保持私密性,可以使用以下一种或多种方法:

  • 请联系托管提供商设置防火墙规则,仅允许从用于测试的 IP 地址访问测试站点。
  • 伪装 URL,使其与公共网站的 URL 不相似。
  • 使用 robots.txt 文件确保搜索引擎不会对测试网站进行爬网,也不会在搜索结果中报告指向它的链接。

这些方法中的第一种方法显然是最安全的,但其过程特定于每个托管提供程序,本教程不会介绍。 如果你确实与托管提供商安排,只允许你的 IP 地址浏览到测试帐户 URL,理论上你不必担心搜索引擎会对其进行爬网。 但即使在这种情况下,部署 robots.txt 文件也是一个好主意,作为备份,以防防火墙规则被意外关闭。

robots.txt文件位于项目文件夹中,其中应包含以下文本:

User-agent: *
Disallow: /

User-agent 告知搜索引擎文件中的规则适用于所有搜索引擎 Web 爬网程序 (机器人) ,行 Disallow 指定不应爬网网站上的任何页面。

你可能确实希望搜索引擎对生产站点进行目录,因此需要从生产部署中排除此文件。 为此,请参阅 ASP.NET Web 应用程序项目部署常见问题解答中的是否可以从部署中排除特定文件或文件夹? 请确保仅为生产发布配置文件指定排除项。

创建第二个托管帐户是一种使用测试环境的方法,该环境不是必需的,但可能值得增加费用。 在以下教程中,将继续使用 IIS 作为测试环境。

在下一教程中,你将更新应用程序代码并将更改部署到测试和生产环境。