私はAzure BlobストレージでWCF RESTサービスを持っています。ストリームでプロキシとしてサービスを使用したくないので、クライアントの要求を絶対URLにリダイレクトしたいのですが、ファイルにリダイレクトして直接オープンしようとします。私が望むのは、サーバーが要求を絶対的なblobのURLにリダイレクトするときにダウンロードプロセスを開始することだけです。私が試したコードは以下の通りです:Azure BlobストレージでWCF RESTからファイルをダウンロード
var sas = blob.GetSharedAccessSignature(new SharedAccessPolicy
{
Permissions = SharedAccessPermissions.Read,
SharedAccessStartTime = DateTime.UtcNow,
SharedAccessExpiryTime = DateTime.UtcNow + TimeSpan.FromMinutes(1)
});
WebOperationContext.Current.OutgoingResponse.ContentType = blob.Properties.ContentType;
WebOperationContext.Current.OutgoingResponse.ContentLength = blob.Properties.Length;
WebOperationContext.Current.OutgoingResponse.Location = blob.Uri.AbsoluteUri+sas;
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect;
P.S.ステータスコードをリダイレクト、ムーブドなどに変更しようとしましたが、何も変わりません。
更新 Iは、アプリケーション/オクテットストリームにContentTypeをを変更すると、それはIEでこのような結果:
<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
...
</base64Binary>
はい、FirefoxとChromeで動作しますが、正しく動作しません。ブラウザは、ファイルと拡張子の実際の名前が何であるかを知らない。 azureから大きなファイルをダウンロードする最も良い方法は何ですか?ストリームは正しい方法ですか?ストリームを作成するために、サーバーはクライアントにデータを送信する前にデータをダウンロードする必要があります。 – iboware
画像がない場合、私は通常ファイルを圧縮します。 ZIP拡張子とアプリケーション/ x-zip圧縮されたコンテンツタイプでは、ファイルは通常インラインで表示されます。 – astaykov
お返事ありがとうございます。別の返信を少し待っていますが、これを最も適切な方法で実行するためのベストプラクティスを検索し、回答を承認済みとしてマークします。 – iboware