0

想象一下,我们有 2 个 Azure 存储帐户,其中一个是常规帐户,另一个是政府帐户(或德国、中国等)。以下是我们创建 CloudBlobClient 的方式:

    private const string ConnectionStringTemplate = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};";

    public static CloudBlobClient Create(string protocol, string accountName, string accountKey)
    {
        var connectionString = string.Format(CultureInfo.InvariantCulture, ConnectionStringTemplate, protocol, accountName, accountKey);
        var account = CloudStorageAccount.Parse(connectionString);

        return account.CreateCloudBlobClient();
    }

此代码适用于普通账户,但对于政府账户则不行。我们应该指定 EndpointSuffix(core.usgovcloudapi.net 而不是默认的 core.windows.net),连接字符串应该是这样的:

"DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};EndpointSuffix={3}";

所以,问题是,如果只有 AccountName 和 AccountKey,我怎么知道是哪个账户?是否有一些 API 方法可以检查它们的帐户类型或端点后缀?

4

2 回答 2

2

所以,问题是,如果只有 AccountName 和 AccountKey,我怎么知道是哪个账户?是否有一些 API 方法可以检查它们的帐户类型或端点后缀?

到今天为止,还没有 API 可以做到这一点。您可以做的一件事是创建一个CloudStorageAccount使用您拥有的信息的实例并尝试列出 blob 容器。

假设存在该名称的存储帐户,并且如果帐户名称/密钥组合正确,那么您应该能够看到 blob 容器列表。如果帐户名/密钥组合不正确,则存储服务将返回 403 错误。

由于您的意图只是检查帐户名称/密钥组合,您可以要求存储服务仅返回 1 个 blob 容器以减少响应数据并加快操作。

于 2017-06-21T13:48:35.050 回答
1

没有这样的 API 可以做到这一点,因为您的帐户位于不同的云中,并且 Azure API 始终在一个云中提供服务。实际上,您甚至可以在不同的云中创建具有相同名称的帐户。因此,您需要自己维护“账户、云名称(公共Azure/China/Germany Gov)”映射。:)

于 2017-06-21T22:35:19.363 回答