title: Azure Blob Storage .NET client request timeout
body: <p>I'm trying to understand the behavior of handling network errors in the Azure Storage .NET client. In short, my issue is:</p>
  
  <p>If I pull my network cable while I'm downloading a blob from blob storage, my application will hang for at least 30 minutes (this is how long my patience lasted - it probably hangs longer).</p>
  
  <p>For example, this happens if I use the following code (I have not configured any settings on the blob client itself).</p>
  
  <pre><code>...
  
  var blockBlob = container.GetBlockBlobReference("myblob.data");
  
  var blobRequestOptions = new BlobRequestOptions()
      {
          RetryPolicy = new NoRetry(),
      };
  
  using (var stream = new MemoryStream())
  {
      blockBlob.DownloadToStream(stream, null, blobRequestOptions);
  }
  </code></pre>
  
  <p>I know that I can configure the <em>MaximumExecutionTime</em> property in BlobRequestOptions, but it seems a bit strange to me that the default behavior is to hang indefinitely if there's a drop in network connectivity. This makes me suspect that I'm missing something basic on how the client is supposed to be used. (There default value for MaximumExecutionTimeout appears to be Infinite).</p>
  
  <p>I also know I can pass in a ServerTimeout, but my understanding is that this is used internally in the Azure Storage service and would't be applicable if there's a network drop.</p>
  
  <p>What I think I'm looking for specifically is a per-request timeout for the HTTP calls made to blob storage. Something like Timeout on a HttpWebRequest.</p>
  
  <p>(I've reproduced my issue in the Azure Storage Client version 9.3.2)</p>