Azure blob DownloadToStream for HttpWebRequest имеет смысл повторить попытку? - PullRequest
0 голосов
/ 14 сентября 2018

Я имею дело с API, который работает через https. Это просто: мое приложение отправляет данные, получает ответы. Мои данные хранятся в BLOB-объекте Azure, и я загружаю их прямо в поток http следующим образом:

//form request
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destination.HostURL);
request.ContentType = "text/xml; encoding='utf8'";
request.Headers.Add("Cookie", headers.Get("Set-Cookie"));
request.ContentLength = contentLength;

//get blob reference
CloudStorageAccount = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
CloudBlob blockBlob = container.GetBlobReference(fileName);
blockBlob.FetchAttributes();

//write blob content to request stream
Stream requestStream = request.GetRequestStream();
blockBlob.DownloadToStream(requestStream);

У меня вопрос ... если по какой-то причине происходит сбой blockBlob.DownloadToStream(), например, если он выдает (System.Net.WebExceptionStatus)Status: ConnectionClosed, имеет ли смысл сбросить позицию потока на 0 и повторить попытку blockBlob.DownloadToStream(), или он просто сохранит делать то же самое, и я должен вместо этого сделать новый запрос?

В основном, куда поместить мои попытки: поток записи, весь запрос или оба?

Я сейчас сижу на повторных попытках обоих, но я понятия не имею, как работает поток HttpWebRequest и не является ли это ненужным усложнением, чтобы вместо этого вставить это в компьютер повторной попытки.

...