2015-04-01 156 views
5

是否有某個類允許使用azure blockblob操作上的transactionscope進行回滾?C#Azure存儲Blob上傳TransactionScope

我想使這個作品:

CloudBlockBlob blockBlob; 

    private void UploadPicture(Stream iStream) 
    { 
     using(var ts = new TransactionScope()) 
     { 
      blockBlob.UploadFromStream(iStream); 

      throw new Exception(); 
      ts.Complete(); 
     } 
    } 

當異常是提高,上傳的文件不會被取消。如果交易範圍不可行,我應該如何進行?

+0

你想在這裏實現什麼?目標是使上傳原子,以便整個上傳成功或不做任何事情?你的blob有多大? – 2015-04-06 18:27:24

+0

@ AtulSikaria-MSFT是的我正在嘗試使用他的元數據在我的數據庫中進行原子上傳。如果出現問題,我可以回滾。 blob的最大大小是5 Mo。 – Julian50 2015-04-07 07:23:59

+0

在這種情況下,您不應該需要在更新期間進行事務處理。 blob的更新是原子的。即使blob以塊的形式上傳,它也是提交blob的最後一個PutBlockList請求,它應該是原子的。 – 2015-04-07 19:47:08

回答

1

Azure存儲客戶端庫不提供此支持。但是,如果您的方案可以接受取消支持,則可以將UploadFromStreamAsync API與CancellationToken一起使用。雖然它是異步上傳blob,但您可以取消該操作。根據操作的當前進度,它將嘗試中止上傳。

+0

謝謝,但我想我真的事務範圍卷返回爲實體提供的示例 – Julian50 2015-04-01 20:10:05

+0

不幸的是,Azure存儲不提供此功能。所以,你將不得不自己構建它。 – 2015-04-01 20:21:24

+0

我想,我不是第一個想要做這個功能的人。你需要它的照片,文件等。那麼有沒有一個課程已經寫好了?我找不到任何東西。你有鏈接來幫助我嗎? – Julian50 2015-04-01 20:25:37