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

6
我将尝试使用 Azure Blob 存储。我成功上传了一些图像,但突然出现了以下错误:

An existing connection was forcibly closed by the remote host

我对此进行了调查,发现只要尝试检查 blob 容器是否存在,就会抛出异常。以下是我的代码:BlobClient获取器属性:(请注意,我已经用 ** 标记出连接字符串中的敏感数据)
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())

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

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

如果有人能告诉我可能出现的问题,我会非常感激。


你能在门户中看到容器吗? - Jack Zeng
@JackZeng 是的,我可以。 - J. Doe
@JackZeng 我甚至使用 Azure 存储资源管理器,从那里我可以轻松上传。 - J. Doe
奇怪的是,现在它又可以工作了,原因不明。这可能与超时或网络无关,因为文件非常小(20kb)。@JackZeng - J. Doe
你的订阅情况如何?是学生订阅还是MSDN订阅?它可能已经达到了限制吗? - Pedro G. Dias
显示剩余3条评论
2个回答

0
它也可能是由于超时而发生。 在这种情况下,您可以使用 BlobRequestOptions 设置您选择的超时时间。(我在 CloudBlobContainer.ListBlobsSegmented 方法中发现它非常有用。)
以下是您问题的代码示例:
CloudBlobContainer container = blobClient.GetContainerReference(containerName);

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

if (!containerExists)
// ...

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接