[英]Error "The specified resource does not exist" when trying to copy blob from storage to another
我正在尝试将一个 blob 文件从一个容器移动到另一个存储中的另一个容器。
public void MoveFile(StorageConfig sourceConfig, StorageConfig destinationConfig, string sourceFilename, string destinationFilename)
{
var sContainer = GetBlobContainerReference(sourceConfig.ConnectionString, sourceConfig.ContainerName);
var dContainer = GetBlobContainerReference(destinationConfig.ConnectionString, destinationConfig.ContainerName);
var sBlob = sContainer.GetBlockBlobReference(sourceFilename);
var dBlob = dContainer.GetBlockBlobReference(destinationFilename);
dBlob.StartCopy(sBlob);
sBlob.Delete(DeleteSnapshotsOption.IncludeSnapshots);
}
我有源容器和目标容器的不同凭据。
当我运行这段代码时,错误发生在行 dBlob.StartCopy(sBlob);
并抛出“指定的资源不存在”的错误。
sBlob.Delete() 没有错误,因此它正在到达源 blob 文件。
我观察这些变量:
sBlob.Exists() -> true
dBlob.Exists() -> false
sContainer.Exists() -> true
dContainer.Exists() -> true
所以它可以在两个容器中连接。
我需要先创建目标 blob 吗? 我认为不是基于我在 inte.net 中找到的一些代码。
要将 blob 从一个帐户复制到另一个帐户,源 blob 必须可公开访问。 当在同一存储帐户中复制 blob 时,此限制不适用。
您收到此错误的原因很可能是因为您的源 blob 位于私有容器中。
要解决此问题,请为源 blob 创建一个至少具有read
权限的 SAS URL 并将该 URL 用于复制 blob。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.