2015-04-01 14 views
5

Czy jest gdzieś klasa, która umożliwia wycofanie z transactioncope na lazurowe akcje blockblob?C# Azure Storage Blob Przesyłanie TransactionScope

Chciałbym uczynić to działa:

CloudBlockBlob blockBlob; 

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

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

Kiedy wyjątek jest podnieść, przesłany plik nie został odwołany. Jeśli nie jest to możliwe z zakresem transakcji, jak mam postąpić?

+0

co próbujesz osiągnąć? Czy celem jest uczynienie z atomowego przesłania, aby całe przesłanie zakończyło się sukcesem, czy nic się nie stało? Jak duży jest twój blob? –

+0

@ AtulSikaria-MSFT Tak Próbuję zrobić ładowanie atomowe z jego metadanymi w mojej bazie danych. Jeśli coś pójdzie nie tak, mogę wycofać. Maksymalny rozmiar obiektu typu blob to 5 miesięcy. – Julian50

+0

W takim przypadku nie powinieneś potrzebować transakcji zwiniętej wokół aktualizacji. Aktualizacje obiektów typu blob są atomowe. Nawet jeśli bloby są przesyłane w porcjach, jest to ostatnia prośba PutBlockList, która zatwierdza obiekt typu blob, który powinien być atomowy. –

Odpowiedz

1

Biblioteka klientów usługi Azure Storage nie zapewnia tej obsługi. Jeśli jednak obsługa anulowania jest akceptowalna dla twojego scenariusza, możesz użyć interfejsu API UploadFromStreamAsync z CancellationToken. Chociaż asynchronicznie ładuje obiekt blob, możesz anulować operację. W zależności od aktualnego postępu operacji, spróbuje przerwać wysyłanie.

+0

dziękuję, ale to, czego chcę naprawdę roll zakresu transakcji z powrotem jako podmiot zapewnia na przykład – Julian50

+0

Niestety usługa Azure Storage nie zapewnia tej funkcji. Tak więc będziesz musiał sam ją zbudować. –

+0

Myślę, że nie jestem pierwszym, który chce zrobić tę funkcję. Potrzebujesz go do zdjęć, dokumentów i tak dalej. Czy jest tam jakaś klasa już napisana? Nie mogłem nic znaleźć. Czy masz link, który mi pomoże? – Julian50