0

ブラウザでファイルが生データとして表示されていると報告しているユーザーがいます。彼は Internet Explorer を使用しています。

ファイルは .ashx ハンドラー ファイルを介して提供されており、それまでは機能していました。

これは、私の .ashx ハンドラーの関連部分です。

context.Response.Clear()
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name)
context.Response.AppendHeader("Content-Length", size.ToString)
context.Response.ContentType = "application/pdf"
context.Response.TransmitFile(fullname)
context.Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()

このスクリーンショットから何かを理解できる人はいますか? ここに画像の説明を入力

更新: この動作は、Windows 10 で IE 11 または Edge のいずれかを実行し、ファイルを 2 回目に開いたときにのみ発生します。.pdf ファイルと .docx ファイルの両方で発生します。

4

3 に答える 3

1

これは、PDF をクライアントにストリーミングするために使用するコードです。IE 11で動作します。主な違いは、コードに基づいてBinaryWriteを使用していることです..

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=" + fileName + ".pdf");
HttpContext.Current.Response.BinaryWrite(bytes);
HttpContext.Current.Response.End();

ここに解決策があるかもしれません

念のため、これも好きです..

このスレッドによると、それは(またはあなたの場合は..追加)に置き換えるResponse.Closeのと同じくらい簡単かもしれませんResponse.End

于 2016-01-15T13:38:41.167 に答える
1

私は最終的に自分で答えを見つけました-それは、content-length正確に1バイト大きすぎる値で誤って送信したHTTPヘッダーに関係していました。

これにより、OP で説明されているように、IE/Edge と Windows 10 のみで奇妙な動作が発生しました。

于 2016-04-08T12:40:18.737 に答える