1

要求に応じてファイルを提供することを目的とする WCF REST サービスがあります。

WebOperationContext.Current.OutgoingResponse.Headers.Clear();
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", "attachment;filename=" + fileNameWithExtension);
WebOperationContext.Current.OutgoingResponse.ContentType = contentType;
return new MemoryStream(file.Data);

これをダウンロードすると、IE8 を除くすべてのブラウザーで機能します。ダウンロード リンクをクリックすると、新しいタブが開き、自動的に閉じます。たとえば、Chromeはファイル名を適切に認識できますが、IE8はファイル名を認識しないことを発見しました-ヘッダーからファイル名を無視していたように. これにアプローチする方法を知っている人はいますか?

edit* リンクから URL を抽出して手動で IE8 のアドレス バーに配置すると、最初の試行ではダウンロードに失敗しますが、2 回目の試行ではすぐにダウンロードできることがわかりました。Fiddler で何が起こっているかを見ると、最初の試行で次のヘッダーが表示されることがわかります。

Set-Cookie: ASP.NET_SessionId=rhyk5nxw3fmrkjonsjknntuw; path=/; HttpOnly

2 回目にダウンロードしようとすると、同じヘッダーがありません。

4

1 に答える 1

0

したがって、WCF コードから次の手順をコメントアウトすると、キャッシュ コントロールをキャッシュなしに設定したことがわかります。IE8 はファイルを正常に処理します。変。

//HttpContext.Current.Response.AppendHeader("キャッシュ制御", "キャッシュなし"); //HttpContext.Current.Response.CacheControl = "キャッシュなし"; //HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);

于 2013-05-09T10:11:09.420 に答える