2015-04-01 21 views
5

Azure blockblob eylemleri ile ilgili işlemler yaparak geri dönüşü mümkün kılan bir sınıf var mı?C# Azure Depolama Bloğu Yükleme TransactionScope

yapamıyor istiyorum bu işleri:

CloudBlockBlob blockBlob; 

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

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

istisna yükseltmek olduğunu yüklenen dosya iptal edilmez. İşlem kapsamı ile mümkün değilse, nasıl devam etmeliyim?

+0

Burada ne elde etmeye çalışıyorsunuz? Yükleme atomunu, tüm yükleme başarılı olsun ya da hiçbir şey yapmamak için mi yapmalı? Bloğun ne kadar büyük? –

+0

@ AtulSikaria-MSFT Evet Veritabanımdaki meta verileriyle atomik yüklemeyi yapmaya çalışıyorum. Bir şeyler ters giderse geri alabilirim. Blob'un maksimum boyutu 5 Mo'dur. – Julian50

+0

Bu durumda, güncellemeniz etrafında bir İşlem yapılması gerekmez. BLOB'lar için güncellemeler atomiktir. Bloblar yığınlar halinde yüklüyse bile, atomik olması gereken blobu işleyen son PutBlockList isteği. –

cevap

1

Azure Depolama İstemcisi Kitaplığı bu desteği sağlamaz. Ancak, senaryo için iptal desteği kabul edilebilirse, CancellationToken ile UploadFromStreamAsync API'sini kullanabilirsiniz. Blob asenkronize olarak yüklenirken işlemi iptal edebilirsiniz. İşlemin mevcut ilerlemesine bağlı olarak, yüklemeyi iptal etmeye çalışır.

+0

soruma cevap vermeli, ama ne istediğimi gerçekten kapsam roll işleminde Varlık, örneğin – Julian50

+0

sağlar. Ne yazık ki, Azure Storage bu işlevi sağlamaz. Yani, kendiniz inşa etmeniz gerekecek. –

+0

Sanırım, bu özelliği yapmak isteyen ilk kişi ben değilim. Resimler, belgeler vb. Için buna ihtiyacınız var. Öyleyse zaten yazılı olan bir sınıf var mı? Hiçbir şey bulamadım. Bana yardım edecek bir bağlantın var mı lütfen? – Julian50

İlgili konular