2017-06-21 48 views
0

想象一下,我们有2个Azure存储帐户,其中一个是常规的,另一个是 - 政府(或德国,中国等)。 下面是我们如何创造CloudBlobClient:具有自定义端点后缀的Azure云存储帐户

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方法来检查它们的帐户类型或端点后缀?

回答

1

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

截至今日,没有API可以做到这一点。你可以做的一件事是使用你所拥有的信息创建一个CloudStorageAccount的实例,并尝试列出blob容器。

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

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

+0

谢谢,我想过这种方法,但它看起来更像是解决方法。但是,如果没有其他方法,它可以是:-) – Lubch

+0

它确实是一个解决方法:)。我们还使用这种方法来测试我们的产品中帐户名称/组合键是否正确,因为没有“Validate Connection”API可用(就像您在SQL Server中一样)。 –

1

由于您的帐户跨越不同的云并且Azure API始终在一个云中提供服务,因此没有这样的API可以这样做。实际上,您甚至可以在不同的云中创建具有相同名称的帐户。因此,您需要自行维护“账户,云名称(公共Azure /中国/德国政府)”映射。 :)