private static async Task WriteBlob(string auditData, string fullPath, CloudBlockBlob blob) { try { var strm = await Task.Factory.FromAsync( (cb, s) => blob.BeginOpenWrite( AccessCondition.GenerateIfNoneMatchCondition("*"), new BlobRequestOptions(), new OperationContext(), cb, s), ar => blob.EndOpenWrite(ar), null); using (var writer = new StreamWriter(strm)) { await writer.WriteAsync(auditData); } } catch (StorageException ex) { if (ex.RequestInformation != null && ex.RequestInformation.HttpStatusCode == 409) { // Blob already existed! throw new InvalidOperationException(String.Format( CultureInfo.CurrentCulture, Strings.CloudAuditingService_DuplicateAuditRecord, fullPath)); } throw; } }