お手数をおかけしますが、よろしくお願いいたします。
Azureクライアントライブラリ(CloudStorageAccount-CloudBlobClient-CloudBlob)を使用して、WPFアプリケーションでBLOBをダウンロード/アップロードしています。
WPFクライアントアプリケーションでタイムアウトセッションを設定して、クラウドBLOBの取得の試行を中止したいと思います。これは、BLOB転送セッションで設定できるサーバー側のタイムアウトとは異なります。アプリケーションが使用されるインターネット接続は非常に不安定な断続的な接続があるため、これを実行したいと思います。
つまり、実際のデータ転送の前にBlobContainer.FetchAttributesを実行して、インターネット接続を確認しようとしています。接続がない場合、タイムアウトして例外がスローされるまで90奇数秒待ちたくありません。
すでにBlobRequestOptionsでタイムアウトを設定しようとしましたが、接続が確立された場合にのみ適用できるため、これは機能しません。
設定が間違っていることを理解しましたか、それともより速いタイムアウトを達成するためにセットアップ/構成/コード化する必要がある何かがありますか?
Fiddlerで、StorageClientライブラリが舞台裏でHTTPを使用していることがわかります。私が読んだいくつかの投稿によると、以下に示すようにapp.configでタイムアウトを設定しようとしました。これもうまくいきませんでした。
<configuration>
<system.web>
<httpRuntime executionTimeout="5" />
</system.web>
</configuration>
BlobRequestオプションを使用したサンプルタイムアウト:
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
blobContainer = blobClient.GetContainerReference("abcd");
CloudBlob blob = blobContainer.GetBlobReference(aCloudPath);
BlobRequestOptions bro = new BlobRequestOptions()
{ Timeout = TimeSpan.FromSeconds(5) };
blob.DownloadToFile(aLocalPath, bro);
どちらのオプションも機能しません!!