c# - 通过 GetBlockBlobReference() 方法添加到 blob 文件名的容器名称

标签 c# azure azure-blob-storage

我正在为 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/”前缀?如何去掉前缀?

最佳答案

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

关于c# - 通过 GetBlockBlobReference() 方法添加到 blob 文件名的容器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44179772/

相关文章:

c# - 实体值的版本控制

c# - 如何在UWP ListView中进行分页

c# - 在 C# View 模型中访问 XAML 对象

c# - 如何使用 C# 获取 Azure Blob 存储容器中现有目录的列表?

c# - 将日期时间重新格式化为 2014 年 11 月 7 日

azure - 通过 Azure Active Directory 进行 FreeRADIUS 身份验证

c# - 如何改变关系数据库思维来设计 Azure 表存储数据存储?

Azure 服务总线共享访问签名

azure - 使用 distcp 时,本地是否支持 wasb 协议(protocol)?

django - 有选择地删除上传到 Azure blob 的图像(Django/Python 项目)