Azure blob存储异常"远程主机"强制关闭现有连接。

时间:2016-03-25 00:55:50

标签: c# azure azure-storage azure-storage-blobs azure-sdk-.net

我试图使用azure blob存储。 我成功上传了一些图片,但突然间我得到了错误:

  

远程主机强行关闭现有连接

我调查了它,每当我尝试检查blob容器是否存在时抛出异常。

这是我的代码:

BlobClient getter属性:(注意,我在连接字符串中用**标记了敏感数据)

static string connectionString = "DefaultEndpointsProtocol=https;AccountName=**;AccountKey=**;BlobEndpoint=https://**.blob.core.windows.net/;TableEndpoint=https://**.table.core.windows.net/;QueueEndpoint=https://**.queue.core.windows.net/;FileEndpoint=https://**.file.core.windows.net/";
public static CloudBlobClient BlobClient
{
            get
            {
                // Retrieve storage account from connection string.
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

                // Create the blob client.
                CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
                return blobClient;
            }
}

抛出异常的实际代码:

 CloudBlobContainer container = BlobClient.GetContainerReference(containerName);
 if (!container.Exists())

准确地说,异常发生在我检查容器是否存在的行上。

我不知道出了什么问题。我很肯定连接字符串是正确的(我将其复制)。

如果有人能告诉我可能出现的问题,我真的很感激。

2 个答案:

答案 0 :(得分:0)

可伸缩性的最佳做法是将.NET默认连接限制增加到100.默认情况下,在客户端环境中,默认值为2.必须在打开任何连接之前设置默认连接限制。有关此其他可扩展性最佳做法,请参阅Microsoft Azure Storage Performance and Scalability Checklist

答案 1 :(得分:0)

也可能由于超时而发生。 在这种情况下,您可以使用BlobRequestOptions来设置您选择的超时。 (我发现它在CloudBlobContainer.ListBlobsSegmented方法中很有用。)

以下是您的问题的代码示例:

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

var containerExists = container.Exists(new BlobRequestOptions() {
    ServerTimeout = TimeSpan.FromMinutes(5) 
});

if (!containerExists)
// ...