使用 Visual Studio 配置 Azure 云服务(扩展支持)角色

备注

本文适用于 Azure Azure 云服务(扩展支持)。 云服务(经典版)自 2024 年 8 月 31 日起停用。 有关详细信息,请参阅 云服务(经典)部署模型将于 2024 年 8 月 31 日停用。 对于新开发,我们建议使用专为特定目的设计的较新服务类型,例如 Azure 应用服务Azure FunctionsAzure 容器应用。 有关可用服务的最新列表,请参阅 Azure 产品 目录

Azure 云服务(扩展支持)项目可以具有一个或多个工作角色或 Web 角色。 对于每个角色,需要定义该角色的设置方式,并配置该角色的运行方式。

云服务的信息存储在以下文件中:

  • ServiceDefinition.csdef - 服务定义文件定义云服务的运行时设置,包括所需的角色、终结点和虚拟机大小。 角色运行时,无法更改存储在 ServiceDefinition.csdef 中的数据。
  • ServiceConfiguration.cscfg - 服务配置文件配置运行角色的实例数以及为角色定义的设置的值。 在您的角色运行时,存储在 ServiceConfiguration.cscfg 中的数据可以被更改。

若要为控制角色运行方式的设置存储不同的值,可以定义多个服务配置。 可以对每个部署环境使用不同的服务配置。 例如,可以将存储帐户连接字符串设置为在本地服务配置中使用本地 Azure 存储模拟器,并创建另一个服务配置以在云中使用 Azure 存储。

在 Visual Studio 中创建 Azure 云服务(扩展支持)项目时,会自动创建两个服务配置并将其添加到 Azure 项目:

  • ServiceConfiguration.Cloud.cscfg
  • ServiceConfiguration.Local.cscfg

先决条件

配置 Azure 云服务(扩展支持)项目

可以从 Visual Studio 中的解决方案资源管理器配置 Azure 云服务(扩展支持)项目,如以下步骤所示:

  1. 在 Visual Studio 中创建或打开 Azure 云服务(扩展支持)项目。

  2. 解决方案资源管理器中,右键单击项目,然后在上下文菜单中选择 属性

    解决方案资源管理器项目上下文菜单

  3. 在项目的属性页中,选择“开发”选项卡

    项目属性页 - 开发选项卡

  4. 服务配置 列表中,选择要编辑的服务配置的名称。

    屏幕截图,其中显示了 Azure 云服务(扩展支持)项目的服务配置列表。

更改角色实例数

若要提高云服务的性能,可以根据用户数或特定角色所需的负载更改正在运行的角色实例数。 云服务在 Azure 中运行时,将为角色的每个实例创建单独的虚拟机。 这会影响此云服务部署的计费。 有关计费的详细信息,请参阅 了解 Microsoft Azure 的帐单

  1. 在 Visual Studio 中创建或打开 Azure 云服务(扩展支持)项目。

  2. 解决方案资源管理器中,展开项目节点。 在 角色 节点下,右键单击要更新的角色,然后在上下文菜单中选择 属性

    解决方案资源管理器 Azure 角色上下文菜单

  3. 选择“配置”选项卡

    “配置”选项卡

  4. 服务配置 列表中,选择要更新的服务配置。 (如果要更改此角色的所有服务配置,请选择 所有配置。)

    重要

    如果选择特定的服务配置,则会禁用某些属性,因为它们只能为所有配置设置。 若要编辑这些属性,必须选择 所有配置

    服务配置列表 1

  5. 实例计数 文本框中,输入要为此角色启动的实例数。 将云服务发布到 Azure 时,每个实例在单独的虚拟机上运行。

    更新实例计数

  6. 从 Visual Studio 工具栏中,选择“保存”

管理存储帐户的连接字符串

可以为服务配置添加、删除或修改连接字符串。 可能还需要配置使用 Azure 中的存储帐户的云服务配置。

警告

输入存储帐户连接字符串的 Azure 存储帐户密钥信息时,此信息将本地存储在服务配置文件中。 但是,此信息当前未存储为加密文本。

对于每个服务配置使用不同的值,无需在云服务中使用不同的连接字符串,也不必在将云服务发布到 Azure 时修改代码。 可以对代码中的连接字符串使用相同的名称,并且该值不同,具体取决于在生成云服务或发布云服务时选择的服务配置。

  1. 在 Visual Studio 中创建或打开 Azure 云服务(扩展支持)项目。

  2. 解决方案资源管理器中,展开项目节点。 在 角色 节点下,右键单击要更新的角色,然后在上下文菜单中选择 属性

    解决方案资源管理器 Azure 角色上下文菜单

  3. 选择“设置”选项卡

    “设置”选项卡

  4. 服务配置 列表中,选择要更新的服务配置。

    服务配置

  5. 若要添加连接字符串,请选择“添加设置”

    添加连接字符串

  6. 将新设置添加到列表中后,请使用必要的信息更新列表中的行。

    新的连接字符串

    • 名称 - 输入要用于连接字符串的名称。
    • 类型 - 从下拉列表中选择“连接字符串”
    • - 可以直接在 单元格中输入连接字符串,或选择省略号(...)在 “创建存储连接字符串”对话框中工作。
  7. 在“创建存储连接字符串”对话框中,为“连接方式”选择一个选项。 然后按照所选选项的说明操作:

    • Microsoft Azure 存储模拟器 - 如果选择此选项,对话框上的其余设置将禁用,因为它们仅适用于 Azure。 选择“确定”
    • 您的订阅 - 选择此选项后,可以使用下拉列表选择并登录 Microsoft 帐户,或添加 Microsoft 帐户。 选择 Azure 订阅和存储帐户。 选择“确定”
    • 手动输入凭据 - 输入存储帐户名称,并输入主密钥或第二个密钥。 为 连接 选择一个选项(建议在大多数情况下使用 HTTPS)。选择“确定”
  8. 若要删除连接字符串,请选择连接字符串,然后选择 删除设置

  9. 在 Visual Studio 工具栏中,选择 “保存”

以编程方式访问连接字符串

以下步骤演示如何使用 C# 以编程方式访问连接字符串。

  1. 将以下 using 指令添加到要在其中使用该设置的 C# 文件中:

    using Microsoft.WindowsAzure;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.ServiceRuntime;
    
  2. 以下代码演示了如何访问连接字符串的示例。 将 <ConnectionStringName> 占位符替换为相应的值。

    // Setup the connection to Azure Storage
    var storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("<ConnectionStringName>"));
    

添加自定义设置以在 Azure 云服务(扩展支持)项目中使用

使用服务配置文件中的自定义设置可为特定服务配置添加字符串的名称和值。 可以选择使用此设置来配置云服务中的功能,方法是读取设置的值,并使用此值控制代码中的逻辑。 可以更改这些服务配置值,而无需重新生成服务包,也无需在云服务运行时进行修改。 设置发生更改时,代码可以检查通知。 有关详细信息,请参阅 RoleEnvironment.Changing 事件

可以添加、删除或修改服务配置的自定义设置。 对于不同的服务配置,可能需要这些字符串的不同值。

对于每个服务配置使用不同的值,无需在云服务中使用不同的字符串,也不必在将云服务发布到 Azure 时修改代码。 可以对代码中的字符串使用相同的名称,并且该值不同,具体取决于在生成云服务或发布云服务时选择的服务配置。

  1. 在 Visual Studio 中创建或打开 Azure 云服务(扩展支持)项目。

  2. 解决方案资源管理器中,展开项目节点。 在 角色 节点下,右键单击要更新的角色,然后在上下文菜单中选择 属性

    解决方案资源管理器 Azure 角色上下文菜单

  3. 选择“设置”选项卡

    “设置”选项卡

  4. 服务配置 列表中,选择要更新的服务配置。

    服务配置列表 2

  5. 若要添加自定义设置,请选择 添加设置

    添加自定义设置

  6. 将新设置添加到列表中后,请使用必要的信息更新列表中的行。

    新的自定义设置

    • 名称 - 输入设置的名称。
    • 类型 - 从下拉列表中选择 字符串
    • 值 - 输入设置值。 可以直接在 单元格中输入值,或选择省略号(...)在 “编辑字符串”对话框中输入值。
  7. 若要删除自定义设置,请选择该设置,然后选择 删除设置

  8. 在 Visual Studio 工具栏中,选择 保存

以编程方式访问自定义设置的值

以下步骤演示如何使用 C# 以编程方式访问自定义设置。

  1. 将以下 using 指令添加到用于设置的 C# 文件中:

    using Microsoft.WindowsAzure;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.ServiceRuntime;
    
  2. 以下代码演示了如何访问自定义设置的示例。 将 <SettingName> 占位符替换为相应的值。

    var settingValue = RoleEnvironment.GetConfigurationSettingValue("<SettingName>");
    

管理每个角色实例的本地存储

可以为角色的每个实例添加本地文件系统存储。 存储在该存储中的数据不能由存储数据的角色的其他实例或其他角色访问。

  1. 在 Visual Studio 中创建或打开 Azure 云服务(扩展支持)项目。

  2. 解决方案资源管理器中,展开项目节点。 在 角色 节点下,右键单击要更新的角色,然后在上下文菜单中选择 属性

    解决方案资源管理器 Azure 角色上下文菜单

  3. 选择 本地存储 选项卡。

    本地存储选项卡

  4. 服务配置 列表中,确保选择 所有配置 作为本地存储设置应用于所有服务配置。 任何其他值都会导致页面上的所有输入字段被禁用。

    服务配置列表 3

  5. 若要添加本地存储条目,请选择“添加本地存储

    添加本地存储

  6. 将新的本地存储条目添加到列表中后,请使用必要的信息更新列表中的行。

    新的本地存储条目

    • 名称 - 输入要用于新本地存储的名称。
    • 大小(MB) - 输入新本地存储所需的大小(以 MB 为单位)。
    • 角色回收时清理 - 选择此选项可在回收该角色的虚拟机时删除新本地存储中的数据
  7. 若要删除本地存储条目,请选择该条目,然后选择 删除本地存储

  8. 在 Visual Studio 工具栏中,选择 保存

以编程方式访问本地存储

本部分演示如何通过编写测试文本文件 MyLocalStorageTest.txt以编程方式访问本地存储。

将文本文件写入本地存储

以下代码演示了如何将文本文件写入本地存储的示例。 将 <LocalStorageName> 占位符替换为相应的值。

// Retrieve an object that points to the local storage resource
LocalResource localResource = RoleEnvironment.GetLocalResource("<LocalStorageName>");

//Define the file name and path
string[] paths = { localResource.RootPath, "MyLocalStorageTest.txt" };
String filePath = Path.Combine(paths);

using (FileStream writeStream = File.Create(filePath))
{
    Byte[] textToWrite = new UTF8Encoding(true).GetBytes("Testing Web role storage");
    writeStream.Write(textToWrite, 0, textToWrite.Length);
}

查找写入到本地存储的文件

若要查看上一部分中代码创建的文件,请执行以下步骤:

  1. 在 Windows 通知区域中,右键单击 Azure 图标,然后在上下文菜单中选择 显示计算模拟器 UI

    显示 Azure 计算模拟器

  2. 选择 Web 角色。

    Azure 计算模拟器

  3. 在“Microsoft Azure 计算模拟器”菜单中,选择“工具”>“打开本地存储”。

    打开本地应用商店菜单项

  4. Windows 资源管理器窗口打开时,在 搜索 文本框中输入“MyLocalStorageTest.txt”,然后选择 “输入”以启动搜索。

阅读 配置 Azure 项目,详细了解 Visual Studio 中的 Azure 项目。 通过阅读 架构参考详细了解云服务架构。