我正在升级我的c#解决方案以使用新的Azure SDK 2.0库。我已经对2.0库中发生的重大更改进行了一些小改动,但除此之外,它们是相同的代码。我已经对本地存储进行了测试,并且一切似乎都正常,但是当我测试Azure blob存储时,只需要花费过多的时间来检查blob项是否存在。如果不是更多,只需返回一个指示该项是否存在的布尔值即可。检查项目是否存在于Azure blob容器中需要永久(SDK 2.0)
在下面的代码示例中,花费很长时间完成的行是“if(!blob.Exists())”。
public byte[] GetBlobContent(string blobName)
{
if (blobName == "") return null;
var blobClient = _storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(_containerName);
var blob = container.GetBlockBlobReference(blobName);
if (!blob.Exists())
{
return null;
}
byte[] buffer;
using (var ms = new MemoryStream())
{
blob.DownloadToStream(ms);
buffer = ms.ToArray();
}
return buffer;
}
是否还需要对代码进行其他更改才能使其像以前一样运行?
我刚刚试过你的代码,它似乎工作正常。第一次请求总是需要更长的时间(可能是一两秒钟),但从未在几分钟内,因为你正在观察。我建议从本地计算机运行此代码并通过Fiddler跟踪请求,以便您了解确切需要很长时间的问题。 –
我也遇到过这个问题。通常,Exists()会在几毫秒内返回,但偶尔需要2分钟(需要或几秒钟)。这完全是烦人的! –