繁体   English   中英

尝试将 blob 从存储复制到另一个时出现错误“指定的资源不存在”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM