通过GetBlockBlobReference()方法将容器名称添加到blob文件名

问题描述 投票:2回答:1

我正在为Azure数据工厂管道实现自定义活动,以将blob文件从容器移动到另一个容器。源/目标文件的名称从管道的自定义活动的输入/输出数据集传递到DotNetActivity。为简单起见,让源文件名为'input.txt',目标文件名为'output.txt'。容器的“上传”和“已处理”都存在。

以下代码执行复制部分,无论如何结果不是我所期望的。

logger.Write("Source filename  : {0}", sourceFilename);       // => input.txt
logger.Write("Destin. filename : {0}", destinationFileName);  // => output.txt

CloudBlobContainer sourceContainer = blobClient.GetContainerReference("upload");
CloudBlockBlob sourceBlob = sourceContainer.GetBlockBlobReference(sourceFilename);
CloudBlobContainer destinationContainer = blobClient.GetContainerReference("processed");
CloudBlockBlob destinationBlob = destinationContainer.GetBlockBlobReference(destinationFileName);

logger.Write("Source blob: {0}", sourceBlob.Name);            // => input.txt
logger.Write("Destination blob: {0}", destinationBlob.Name);  // => processed/output.txt ???

destinationBlob.StartCopyFromBlob(sourceBlob);

结果,blob'processed / output.txt'被创建为'processed'容器,而目的是将blob命名为'output.txt'。

为什么'processed /'前缀被添加到目标文件名?如何摆脱前缀?

c# azure azure-storage-blobs
1个回答
0
投票

注意到当DataStudio从VisualStudio重新部署(发布)到Azure时,更改的.NET实现不会重建,但部署会加载现有的.NET DLL。显然问题是由早期版本的DotNetActivity引起的。我现在在发布数据工厂更改之前手动构建DotNetActivity,并且上面的代码按预期工作。 (错过了之前提到的决议)

© www.soinside.com 2019 - 2024. All rights reserved.