如何以编程方式知道当前区域的天蓝色角色?

Rag*_*y P 6 azure

我需要以编程方式查找当前角色正在运行的当前区域(例如"West US"或"East US").有没有API可以找到这个?

Pou*_*sen 2

仅当您使用 Management Api 时才能获取该信息。

通过 REST 或您可以使用 c# Windows Azure 管理库(在 nuget 上预发布)。

但需要注意的是,您需要设置管理证书才能获取信息。

一种更简单的替代方法是在云服务中创建一个设置,并在创建部署配置时设置值。我这样做并为我的目标区域提供了部署配置。

    using( var azure = CloudContext.Clients.CreateComputeManagementClient(...))
    {
       var service = await  azure.HostedServices.GetDetailedAsync("servicename");
      //   service.Properties.Location
      //  service.Properties.AffinityGroup;

    }
    using(var azure = CloudContext.Clients.CreateManagementClient(...))
    {
      var affinityGroup = await  azure.AffinityGroups.GetAsync("name",new CancellationToken());
      //  affinityGroup.Location
    }
Run Code Online (Sandbox Code Playgroud)

这里...是凭据,可以是管理证书或您的 WAAD oauth 令牌。(ADAL:Active Directory 身份验证库)可用于令牌。

这是从证书获取凭据的代码:

    public static CertificateCloudCredentials GetCertificateCloudCredentials(
        string certificateThumbprint, string subscriptionId)
    {
        var certificate = CertificateHelper.LoadCertificate(
            StoreName.My,
            StoreLocation.LocalMachine,
            certificateThumbprint);

        if (certificate == null)
            throw new Exception(
                string.Format("Certificate with thumbprint '{0}' not found",
                certificateThumbprint));

        var cred = new CertificateCloudCredentials(
            subscriptionId,
            certificate
         );
        return cred;
    }
Run Code Online (Sandbox Code Playgroud)