gpt4 book ai didi

c# - TransactionScope 内的 Azure Blob 存储上传

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:42 25 4
gpt4 key购买 nike

我想知道是否有办法或者即使这可行:将文件上传到 TransactionScope 内的 Azure blob 存储,如果出现任何问题,请通过“删除”文件进行回滚。

有人尝试过或实现了这样的目标吗?

只是我试图完成的代码示例:

using (var transaction = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
try {
//some code before to get the file from its location....
UploadFileToAzure(stream, filePath);
transaction.Complete();
}
catch(Exception ex)
{
//rollback the transaction and avoid uploading the file.
}
}

最佳答案

Blob 存储不知道事务 - 它是一种存储机制。您可以在事务中写入本地磁盘吗?

block blob 以 block 的形式上传。成功上传后,每个 block 都会分配一个 Id,并且文件的任何 block 都可以按任何顺序上传(不需要按顺序)。

在此阶段,blob 仍处于“未提交”状态 - 如果此时上传失败,您可以忘记它,Azure 存储会在一段时间后清理/删除它。上传所有 block 后,您可以通过告诉 azure 以什么顺序将 block 放在一起来提交 blob(这将是 block ID 的有序列表)。此后,blob 现已提交,必须手动删除。

您可以通过手动上传要先上传的所有文件的所有 block (在提交 blob 之前)来模拟事务。

关于c# - TransactionScope 内的 Azure Blob 存储上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42719605/

25 4 0
文章推荐: CSS::添加环形后
文章推荐: macos - 无法制作 OpenCV
文章推荐: css - 双边框 CSS
文章推荐: openCV:为 IplImage 添加透明度
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com