gpt4 book ai didi

azure - 使用 BeginUploadFromStream 时 Blob 不存在

转载 作者:行者123 更新时间:2023-12-03 01:58:01 25 4
gpt4 key购买 nike

在我使用 CloudBlob.BeginUploadFromStream() 方法上传文件后,当我尝试检索要下载的文件时,我收到带有 StorageErrorCode.ResourceNotFound 的 StorageClientException 异常。如果我使用 CloudBlob.UploadFromStream() 方法上传相同的文件,则该 blob 确实存在并且我可以下载它。

这是我的下载代码:

var client = _storageAccount.CreateCloudBlobClient();

var container = client.GetContainerReference(BLOB_CONTAINER_DOCUMENTS_ADDRESS);
container.CreateIfNotExist();

string blobName = id.ToString();

var newBlob = container.GetBlobReference(blobName);
if (newBlob.Exists())
{
var stream = newBlob.OpenRead();
return stream;
}
else
{

throw new Exception("Blob does not exist!");
}

Exists 是一种扩展方法。当我使用 BeginUploadFromStream() 方法时,我收到 StorageClientException 错误代码 ResourceNotFound

public static bool Exists(this CloudBlob blob)
{
try
{
blob.FetchAttributes();
return true;
}
catch (StorageClientException e)
{
if (e.ErrorCode == StorageErrorCode.ResourceNotFound)
{
return false;
}
else
{
throw;
}
}
}

以及我上传的电话

var blob = container.GetBlobReference(blobName);

当我稍后检查 blob 是否存在时,这不会引发异常

blob.UploadFromStream(fileStream);

这将

AsyncCallback uploadCompleted = new AsyncCallback(OnUploadCompleted);
blob.BeginUploadFromStream(fileStream, uploadCompleted, documentId);

编辑

按照建议,我没有调用 EndUploadFromStream() 方法。这是我更新后的上传调用:

blob.BeginUploadFromStream(fileStream, uploadCompleted, blob);

还有我的处理程序

private void OnUploadCompleted(IAsyncResult result)
{
var blob = (CloudBlob) result.AsyncState;
blob.EndUploadFromStream(result);
}

运行此函数时,EndUploadFromStream() 方法会抛出 WebException,并带有以下消息:“请求已中止:请求已取消。” InnerException“在写入所有字节之前无法关闭流。”

有人知道这里发生了什么吗?

最佳答案

BeginUploadFromStream 异步上传 Blob,因此当 Blob 在后台线程上上传时,您的方法将继续进行。如果 blob 尚未完成上传,或者 Azure 没有被告知上传已完成,那么您将不会在存储中看到该 blob。只有通过成功完成的事务上传的 blob 才可见。

您可以发布 OnUploadCompleted 的代码吗?

乍一看好像 blob 仍在上传,或者您忘记在 OnUploadCompleted 方法中调用 EndUploadFromStream()

关于azure - 使用 BeginUploadFromStream 时 Blob 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8498618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com