导出 (0) 打印
全部展开

如何:从 Visual Studio 将 Web 应用程序迁移和发布到 Azure

更新时间: 2013年10月

注:本页面内容可能不完全适用中国大陆地区运营的 Windows Azure服务。如要了解不同地区 Windows Azure 服务的差异, 请参考本网站.

若要利用 Windows Azure 的托管服务和可伸缩性,可能要将 Web 应用程序迁移和发布到 Windows Azure。只需对现有 Web 应用程序进行最小程度的更改,便可在 Windows Azure 中运行它。

有关 C# 和 Visual Basic 支持的特定模板列表,请参阅以下部分:支持的项目模板

必须首先从 Visual Studio 中为 Windows Azure 启用 Web 应用程序。下图显示了通过添加用于部署的 Windows Azure 项目来发布现有 Web 应用程序的关键步骤。此过程使用所需 Web 角色将 Windows Azure 项目添加到解决方案。基于拥有的 Web 项目类型,如果服务包需要额外的部署程序集,则该程序集的项目属性也将更新。

将 Web 应用程序发布到 Windows Azure
note注意
仅为解决方案中的 Web 项目显示“转换”>“转换为 Windows Azure 云服务项目”命令。例如,此命令对解决方案中 Silverlight 项目不可用。

若要从 Visual Studio 将 Web 应用程序迁移和发布到 Windows Azure,必须执行以下步骤:

  1. 启用要部署到 Windows Azure 的 Web 应用程序(上图中的步骤 1 和 2)。

  2. 如果在应用程序中使用数据库,则必须更改连接字符串以使用 Windows Azure SQL 数据库:为应用程序使用 Windows Azure SQL 数据库

  3. 如果从 Web 应用程序中写入本地文件,必须为 Web 角色设置本地存储,并写入此本地存储:Manage local storage for each role instance.

  4. 如果有已添加到 Web 应用程序的特定程序集,必须将属性设置为复制程序集,以便将它们也添加到服务包:Include Files in the Service Package.

  5. 将 Web 应用程序发布到 Windows Azure(上图中的步骤 3 和 4)。

note注意
当你创建服务包或者将应用程序发布到 Windows Azure 时,可能会出现警告或错误。这些警告和错误可以帮助你在部署到 Windows Azure 之前解决问题。例如,你可能会收到缺失的程序集的警告。有关如何将任何警告视为错误的详细信息,请参阅如何:使用 Visual Studio 配置 Azure 项目。有关如何解决这些警告或错误的详细信息,请参阅对包验证警告和错误进行故障排除

Caution注意
当你生成应用程序、使用计算仿真程序本地运行应用程序,或者将它发布到 Windows Azure 时,可能会在“错误列表”窗口看到以下错误:“指定的路径和/或文件名太长”。出现此错误的原因是 Windows Azure 项目的完全限定名称太长。项目名称,包括完整路径的长度不能超过 146 个字符。例如,以下是完整的项目名称,包括为 Silverlight 应用程序创建的 Windows Azure 项目的文件路径:c:\users\<user name>\documents\visual studio 2010\Projects\SilverlightApplication4\SilverlightApplication4.Web.Azure.ccproj. 你可能需要将你的解决方案移动到不同的目录,该目录有以减少项目完全限定的名称的长度较短的路径。

启用要部署到 Windows Azure 的 Web 应用程序

启用要部署到 Windows Azure 的 Web 应用程序

  1. 若要启用要部署到 Windows Azure 的 Web 应用程序,请在解决方案中打开 Web 项目的快捷菜单,然后选择“添加 Windows Azure 部署项目”

    执行以下操作:

    • 将名为 <Web 项目的名称>.Azure 的 Windows Azure 项目添加到应用程序的解决方案中。

    • 将 Web 项目的 Web 角色添加到此 Windows Azure 项目中。

    • 对于 MVC 2、MVC 3、MVC 4 和 Silverlight 业务应用程序需要的任何程序集,“复制本地”属性都设置为 true。这将这些程序集添加到用于部署的服务包。

      Important重要提示
      如果你有此 Web 应用程序所需的其他程序集或文件,你必须手动设置这些文件的属性。有关如何设置这些属性的信息,请参阅Include Files in the Service Package

    note注意
    如果在解决方案中的 Windows Azure 项目内已存在特定 Web 项目的 Web 角色,则“转换”>“转换为 Windows Azure 云服务项目”不会显示在此 Web 项目的快捷菜单中。

如果 Web 应用程序中有多个 Web 项目,且希望为每个 Web 项目都创建 Web 角色,则必须为每个 Web 项目执行此过程中的步骤。这将为每个 Web 角色创建独立的 Windows Azure 项目。每个 Web 项目都可以单独发布。此外,你可以将另一个 Web 角色手动添加到 Web 应用程序中的现有 Windows Azure 项目。为此,请打开 Windows Azure 项目中“角色”文件夹的快捷菜单,选择“添加”,然后在“解决方案中的 Web 角色项目”中,选择要添加为 Web 角色的项目,然后选择“确定”按钮。

为应用程序使用 Windows Azure SQL 数据库

如果使用内部 SQL Server 数据库的 Web 应用程序具有连接字符串,必须将此连接字符串改为使用 Windows Azure 托管的 SQL 数据库实例。

Important重要提示
你的订阅必须允许你使用 SQL Database。如果从 Windows Azure 管理门户访问订阅,便可确定订阅提供的服务。

以下说明适用于已发布的管理门户。如果使用预览版管理门户,请跳到下一过程。

为连接字符串使用 Web 角色中的 SQL Database 实例

  1. 若要在 Windows Azure 的管理控制台中创建 SQL 数据库实例,请执行以下文章中所述的步骤:创建 SQL 数据库服务器

    note注意
    为 SQL 数据库实例设置防火墙规则时,必须选中“允许其他 Windows Azure 服务访问此服务器”复选框。

  2. 若要创建用于连接字符串的 SQL 数据库实例,请在下一部分中执行以下文章中所述的步骤:创建 SQL 数据库

  3. 若要复制 ADO.NET 连接字符串以用作你的连接字符串,请在 Windows Azure 的管理门户中执行以下步骤:

    1. 选择“数据库”按钮,然后打开创建 SQL Database 实例所用订阅的节点。

    2. 若要显示可用的 SQL Database 实例,请选择 SQL Database 节点。

    3. 若要显示数据库的属性,请选择数据库。随即出现“属性”视图。

      note注意
      如果没有出现“属性”视图,可能需要使用分隔符打开它。

    4. 若要查看连接字符串,选择“视图”旁边的省略号按钮。

      随即出现“连接字符串”对话框。

    5. 若要复制 ADO.NET 连接字符串,请突出显示文本,然后按 Ctrl+C 键。

    6. 若要关闭对话框,请选择“关闭”按钮。

  4. 若要替换 web.config 文件中的连接字符串,改用此 SQL Database 实例,请打开 web.config 文件,突出显示现有的连接字符串条目,然后按 Ctrl+V 键。

    此 SQL Database 实例的 ADO.NET 连接字符串会替换现有连接字符串。

  5. 此外,还必须将参数MultipleActiveResultSets=True 添加到连接字符串。连接字符串应为以下格式:

    connectionString=”Server=tcp:<database_server>.database.windows.net,1433;Database=<database_name>;User ID=<user_name>@<database_server>;Password=<myPassword>;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True"

  6. (可选)直接更改 web.config 文件中的连接字符串的替代方法是将一段添加到其中一个 web.config 转换文件,取决于你使用来创建你的服务包的生成配置。打开Web.Debug.Config 文件或 Web.Release.Config 文件。添加以下部分到此文件中:

     <connectionStrings>    <add name="DefaultConnection" connectionString="Server=tcp:<database_server>.database.windows.net,1433;Database=<database_name>;User ID=<user_name>@<database_server>;Password=<myPassword>;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> 
    
  7. 保存已修改的文件,然后重新发布应用程序。

通过管理门户使用 SQL Database 实例

  1. 在管理门户中,选择 SQL Database 节点。

    • 如果显示了要使用的 SQL Database 实例,请选择打开它。

    • 如果尚未创建任何实例,请选择相应的链接,然后创建一个实例。

  2. 打开或创建数据库实例后,请选择“连接字符串”链接。

  3. 在页面底部,选择配置防火墙设置的链接,接受默认值或配置所需的值。

  4. 复制 ADO.NET 连接字符串,粘贴到 web.config 文件中,覆盖内部数据库的旧连接字符串,确保添加“MultipleActiveResultSets=True”。

将 Web 应用程序发布到 Windows Azure

将 Web 应用程序发布到 Windows Azure

  1. 若要使用 Windows Azure 计算仿真程序测试本地开发环境中的应用程序,请打开 Web 角色的 Windows Azure 项目的快捷菜单,并选择“设置为启动项目”。然后选择“调试”>“启动调试”(快捷键:F5)。

    此时将显示“启动 Windows Azure 调试环境”对话框。在浏览器中启动应用程序。有关如何在计算仿真程序中其中各类 Web 应用程序的特定详细信息,请参阅本节中的表。

  2. 若要设置应用程序的服务以将其发布到 Windows Azure,你必须准备好一个 Microsoft 帐户和 Windows Azure 订阅。使用以下主题中所述的步骤来设置服务:设置从 Visual Studio 中发布云服务所需的服务.

  3. 若要将 Web 应用程序发布到 Windows Azure,请打开 Web 项目的快捷菜单,然后选择“发布到 Windows Azure”

    此时将显示“发布 Windows Azure 应用程序”对话框。Visual Studio 启动部署过程。有关如何发布应用程序的详细信息,请参阅Publish a Windows Azure Application from Visual Studio

    note注意
    还可以从 Windows Azure 项目发布 Web 应用程序。为此,请打开 Windows Azure 项目的快捷菜单,然后选择“发布”

  4. 若要查看部署进度,可以查看“Windows Azure 活动日志”窗口。当启动部署过程时,将自动显示此日志。可在活动日志中展开行项以显示详细信息,如下图所示:

    VST_AzureActivityLog
  5. (可选)若要取消部署过程,请打开活动日志中的行项目的快捷菜单,并选择“取消并删除”。这会停止部署过程,并从 Windows Azure 中删除部署环境。

    note注意
    若要在已完成部署后删除此部署环境,必须使用管理门户

  6. (可选)启动角色实例后,Visual Studio 将自动在“服务器资源管理器”“Windows Azure 计算”节点中显示部署环境。可以从此位置查看单个角色实例的状态。有关“服务器资源管理器”中的“Windows Azure 计算”节点的详细信息,请参阅使用服务器资源管理器,查看云服务的状态

    下图显示仍处于“正在初始化”状态中的角色实例:

    VST_DeployComputeNode
  7. 若要在部署后访问你的应用程序,请在“Windows Azure 活动日志”中显示“已完成”状态时,选择部署旁边的箭头。这会在 Windows Azure 中显示 Web 应用程序的 URL。有关如何从 Windows Azure 启动特定类型的 Web 应用程序的详细信息,请参阅下表。

下表列出了有关如何从 Windows Azure 启动特定 Web 应用程序,或者使用 Windows Azure 计算仿真程序在本地运行或调试 Web 应用程序的详细信息:

 

Web 应用程序类型 使用计算仿真程序本地运行/调试 在 Windows Azure 中运行

ASP.NET Web 应用程序

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

选择“Windows Azure 活动日志”“部署”选项卡中显示的 URL 超链接,以便在浏览器中加载起始页。

ASP.NET MVC 2 Web 应用程序

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

选择“Windows Azure 活动日志”“部署”选项卡中显示的 URL 超链接,以便在浏览器中加载起始页。

ASP.NET MVC 3 Web 应用程序

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

选择“Windows Azure 活动日志”“部署”选项卡中显示的“URL”超链接,以便在浏览器中加载起始页。

ASP.NET MVC 4 Web 应用程序

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

若要在浏览器中加载起始页,请选择“Windows Azure 活动日志”“部署”选项卡上显示的“URL”链接。

ASP.NET 空 Web 应用程序

你必须在将应用程序设置为起始页的 Web 项目中添加 .aspx 页。然后,在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

如果应用程序中包含默认的 .aspx 页,请选择“Windows Azure 活动日志”“部署”选项卡中显示的 URL 超链接,随后将在浏览器中加载此页。如果你有不同的 .aspx 页,则需要使用以下格式为你的 URL 导航到此特定页:

<部署的 URL>/<页的名称>.aspx

Silverlight 应用程序

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

需要使用以下格式的 URL 导航到应用程序的特定页:<部署的 URL>/<页的名称>.aspx

Silverlight 业务应用程序

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

需要使用以下格式的 URL 导航到应用程序的特定页:<部署的 URL>/<页的名称>.aspx

Silverlight 导航应用程序

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

需要使用以下格式的 URL 导航到应用程序的特定页:<部署的 URL>/<页的名称>.aspx

WCF 服务应用程序

你必须将 .svc 文件设置为 WCF 服务项目的起始页。然后,在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

需要使用以下格式的 URL 导航到应用程序的 svc 文件:<部署的 URL>/<服务文件的名称>.svc

WCF 工作流服务应用程序

你必须将 .svc 文件设置为 WCF 服务项目的起始页。然后,在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

需要使用以下格式的 URL 导航到应用程序的 svc 文件:<部署的 URL>/<服务文件的名称>.svc

ASP.NET 动态实体

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

你必须更新连接字符串

另外,还需要使用以下格式的 URL 导航到应用程序的特定页:<部署的 URL>/<页的名称>.aspx

ASP。NET 动态数据 Linq to SQL

在菜单栏中选择“调试”>“启动调试”(键盘操作:选择 F5 键)。

必须遵照以下过程中的步骤操作:为应用程序使用 SQL Azure 数据库

另外,还需要使用以下格式的 URL 导航到应用程序的特定页:<部署的 URL>/<页的名称>.aspx

为 ASP.NET Dynamic Entities 更新连接字符串

更新 ASP.NET 动态实体的连接字符串

  1. 若要创建可用于 ASP.NET Dynamic Entities Web 应用程序的 SQL Azure 数据库,必须遵照以下过程中的步骤操作:为应用程序使用 SQL Azure 数据库

  2. 从 Windows Azure 平台管理门户添加此数据库所需的表和字段。

  3. 在 web.config 文件中,这种类型的应用程序的连接字符串具有以下格式:

    <add name="tempdbEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=<server name>\SQLEXPRESS;initial catalog=<database name>;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    

    使用如下所示的 SQL Azure 数据库的 ADO.NET 连接字符串更新连接字符串值:

    <add name="tempdbEntities"      connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=tcp:<SQL Azure server name>.database.windows.net,1433;Database=<database name>;User ID=<user name>;Password=<password>;Trusted_Connection=False;Encrypt=True;multipleactiveresultsets=True;App=EntityFramework&quot;"      providerName="System.Data.EntityClient" /> 
    
  4. 若要使用的连接字符串所做的更改保存 web.config 文件,在菜单栏上选择“文件,保存 web.config”

支持的项目模板

若要将 Web 应用程序发布到 Windows Azure,应用程序必须使用下表中列出的、适用于 C# 或 Visual Basic 的项目模板之一。

 

项目模板组 项目模板

Web

ASP.NET Web 应用程序

Web

ASP.NET MVC 2 Web 应用程序

Web

ASP.NET MVC 3 Web 应用程序

Web

ASP.NET MVC4 Web 应用程序

Web

ASP.NET 空 Web 应用程序

Web

ASP.NET MVC 2 空 Web 应用程序

Web

ASP.NET 动态数据实体 Web 应用程序

Web

ASP.NET 动态数据 Linq to SQL Web 应用程序

Silverlight

Silverlight 应用程序

Silverlight

Silverlight 业务应用程序

Silverlight

Silverlight 导航应用程序

WCF

WCF 服务应用程序

WCF

WCF 工作流服务应用程序

工作流

WCF 工作流服务应用程序

另请参见

社区附加资源

显示:
© 2014 Microsoft