当前位置: 首页 > 知识库问答 >
问题:

Azure blob存储异常“远程主机强制关闭了现有连接”

龚俊捷
2023-03-14

我正在尝试使用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个答案

汪弘光
2023-03-14

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

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

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

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

if (!containerExists)
// ...
颛孙玉石
2023-03-14

可伸缩性的最佳实践是增加。NET默认连接限制为100。在客户端环境中,默认值为2。在打开任何连接之前,必须设置默认连接限制。有关其他可扩展性最佳实践,请参阅Microsoft Azure存储性能和可扩展性检查表。

 类似资料: