10

いくつかのレガシー コードを確認していて、応答が無期限に停止するバグを発見しました。

基本的な考え方は次のとおりです。

Response.Content-Type = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename" & someFileName)
Response.AddHeader("Content-Length", someStoredLength)
Response.BinaryWrite(someByteArray)
Response.Flush()
Response.End()

問題は、someStoredLength が someByteArray の実際のサイズよりもはるかに大きいため、ブラウザが回転している間、クライアントはファイルのダウンロードを待っているだけです。

コンテンツの長さを指定する AddHeader を削除することだけを考えています。これを行うと、すべてが正常に機能するように見えますが、何かを理解していないのではないかと心配しています。

この AddHeader を削除してもよろしいですか、それともこの問題に対処するためのより良い方法を考え出す必要がありますか?

4

2 に答える 2

10

アプリケーションで定義する必要があります (Content-Length までスクロールします) が、厳密には必須ではありません

これは、可能なオプションの適切な議論です。

于 2009-09-11T18:44:59.880 に答える
10

Content-Length 行を次のように変更します。

Response.AddHeader("Content-Length", someByteArray.Length.ToString())
于 2009-09-11T18:48:35.343 に答える