Azure Blob 存储异常“现有连接被远程主机强行关闭”

Posted

技术标签:

【中文标题】Azure Blob 存储异常“现有连接被远程主机强行关闭”【英文标题】:Azure blob storage exception "An existing connection was forcibly closed by the remote host" 【发布时间】:2016-07-12 18:27:36 【问题描述】:

我正在尝试使用 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())

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

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

如果有人能告诉我问题可能是什么,我将不胜感激。

【问题讨论】:

你能看到门户中的容器吗? @JackZeng 是的,我可以。 @JackZeng 我什至在使用 azure storage explorer,从那里我可以上传就好了。 @JackZeng 奇怪的东西,现在它又无缘无故地工作了。是什么原因造成的?它应该与超时或网络无关,因为文件非常小(20kb) 可能是网络故障或服务器端维护造成的。我无法重现您的问题,因此无法找到真正的原因。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

这是您问题的代码示例:

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

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

if (!containerExists)
// ...

【讨论】:

以上是关于Azure Blob 存储异常“现有连接被远程主机强行关闭”的主要内容,如果未能解决你的问题,请参考以下文章

读取大型 .accdb 文件引发异常“现有连接被远程主机强行关闭”

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

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

Python异常:ConnectionError 10054远程主机强制关闭现有连接

无法将数据写入传输连接:现有连接被远程主机强行关闭

访问 Photobucket API 时“现有连接被远程主机强行关闭”