C# Azure存储API“;StartCopyFromBlob“;
我试图将一个blob从一个位置复制到另一个位置,但这种方法似乎已经过时。我读过的所有东西都说我应该使用“StartCopy”。但是,当我尝试此操作时,它不会复制blob。我刚在目的地收到一个404错误 我似乎找不到这方面的任何文档。有谁能在最新版本的API中为我提供建议,或者为我指出一些文档的方向C# Azure存储API“;StartCopyFromBlob“;,c#,asp.net-mvc,azure,C#,Asp.net Mvc,Azure,我试图将一个blob从一个位置复制到另一个位置,但这种方法似乎已经过时。我读过的所有东西都说我应该使用“StartCopy”。但是,当我尝试此操作时,它不会复制blob。我刚在目的地收到一个404错误 我似乎找不到这方面的任何文档。有谁能在最新版本的API中为我提供建议,或者为我指出一些文档的方向 Uri uploadUri = new Uri(destinationLocator.Path); string assetContainerName = uploadUri.Segments[1];
Uri uploadUri = new Uri(destinationLocator.Path);
string assetContainerName = uploadUri.Segments[1];
CloudBlobContainer assetContainer =
cloudBlobClient.GetContainerReference(assetContainerName);
string fileName = HttpUtility.UrlDecode(Path.GetFileName(model.BlockBlob.Uri.AbsoluteUri));
var sourceCloudBlob = mediaBlobContainer.GetBlockBlobReference(fileName);
sourceCloudBlob.FetchAttributes();
if (sourceCloudBlob.Properties.Length > 0)
{
IAssetFile assetFile = asset.AssetFiles.Create(fileName);
var destinationBlob = assetContainer.GetBlockBlobReference(fileName);
destinationBlob.DeleteIfExists();
destinationBlob.StartCopyFromBlob(sourceCloudBlob);
destinationBlob.FetchAttributes();
if (sourceCloudBlob.Properties.Length != destinationBlob.Properties.Length)
model.UploadStatusMessage += "Failed to copy as Media Asset!";
}
我只是发布我的评论作为答案,让它更容易看到
这不是容器的访问级别。这与
StartCopy
也没有任何关系。结果是这些代码行
var mediaBlobContainer = cloudBlobClient.GetContainerReference(cloudBlobClient.BaseUri + "temporarymedia");
mediaBlobContainer.CreateIfNotExists();
显然,我不应该提供cloudBlobClient.BaseUri
,只提供名称temporarymedia
var mediaBlobContainer = cloudBlobClient.GetContainerReference("temporarymedia");
但是没有相关的错误消息。希望它能在将来的某个时候拯救另一个Azure新手。该容器是公共容器还是私有容器?如果它是私有的,您可能需要将其更改为公共的。或者,如果希望保持容器私有,可以为此blob创建一个SAS,并使用SAS作为源。可能与此线程重复—不是容器的访问级别。这与StartCopy也没有任何关系。结果是这些代码行
var mediaBlobContainer=cloudBlobClient.GetContainerReference(cloudBlobClient.BaseUri+“temporarymedia”);'代码>mediaBlobContainer.CreateIfNotExists()代码>显然,我不应该提供cloudBlobClient.BaseUri,而应该提供名称“temporarymedia”<代码>var mediaBlobContainer=cloudBlobClient.GetContainerReference(“临时媒体”)代码>但没有相关的错误消息。希望它能在将来的某个时候为另一个Azure新手节省一些时间。请不要将您的解决方案发布为。这使得其他用户更容易找到答案,并看到您的问题已得到解决。(几天后,您将能够找到您的答案。)