none
Response.WriteFileのファイルサイズについて RRS feed

  • 質問

  • Response.WriteFileでサーバからHTTPでファイルをダウンロードしていますが、

    Response.WriteFileを使った場合、ダウンロードしたファイルのサイズが約サーバ上配置されたファイルの三倍ぐらいになります。

    これはResponse.WriteFileの仕様でしょうか?

    ※この現象は約5M以上のファイルをダウンロードする場合は、発生します。数百KBのファイルのダウンロードは問題ないです。

    環境:ASP.NET 2.0 .NET FRAMEWORK 2.0sp2 WINDOWS 2008SERVER sp2 IIS7.0

     

    2010年7月21日 5:31

すべての返信

  • > これはResponse.WriteFileの仕様でしょうか?

    そういう話は、少なくとも自分は聞いたことがありません。

    差し支えなければ、問題を再現できる必要最小限のコードをアップしてい
    ただけると、こちらでも検証できるので、お役に立てるかもしれません。

    • 回答の候補に設定 山本春海 2010年7月29日 5:41
    2010年7月21日 13:22
  • こんにちは。

    SurferOnWww さんがおっしゃるように再現環境と、それと、もし再現できましたらそのファイルをバイナリエディタなどで開いて、
    どんなデータが追加されているのかみてみると、問題を把握するヒントがあるかもしれませんね。

    小山
    http://keicode.com/

    • 回答の候補に設定 山本春海 2010年7月29日 5:42
    2010年7月21日 17:27
  • > これはResponse.WriteFileの仕様でしょうか?

    そういう話は、少なくとも自分は聞いたことがありません。

    差し支えなければ、問題を再現できる必要最小限のコードをアップしてい
    ただけると、こちらでも検証できるので、お役に立てるかもしれません。

    投稿ありがとうございます。

    恐らく環境の問題のような気がします。2003R2+IIS6では問題ないです。

    発生する環境は2008SP2+IIS7で発生します。
    おそらく、IIS7の問題かもしれないです。

    とりあえず、サーバを最新にUpdateしてためしてみます。また、のちほど結果をアップします。

     

     

    2010年7月22日 1:54
  • > これはResponse.WriteFileの仕様でしょうか?

    そういう話は、少なくとも自分は聞いたことがありません。

    差し支えなければ、問題を再現できる必要最小限のコードをアップしてい
    ただけると、こちらでも検証できるので、お役に立てるかもしれません。

    投稿ありがとうございます。

    恐らく環境の問題のような気がします。2003R2+IIS6では問題ないです。

    発生する環境は2008SP2+IIS7で発生します。
    おそらく、IIS7の問題かもしれないです。

    とりあえず、サーバを最新にUpdateしてためしてみます。また、のちほど結果をアップします。

     

     


    その後ですが、サーバを最新にUpdateしたが結果はNGでした。

    どうにも、マスタページと組み合わせて使っている場合、5M以上のファイルを

    ダウンロード時Content-lengthを明示的に指定しない場合、おかしくなっているように見えます。

    Content-lenthを明示的に指定している場合、問題ないと思われます。

     

    2010年7月27日 10:54
  • > どうにも、マスタページと組み合わせて使っている場合、5M以上のファイルを

    マスターページが影響を与えるというのは考えにくいですね。

    Windows Server 2008 は持っていますので、差し支えなければ、問題を再現できる
    必要最小限のコードをアップしていただければ、こちらでも検証してみますが。

    2010年7月27日 13:54
  • すみません、必要最小限のコードで再現しないので、ちょっと不気味です。

    下記掲示板の内容と基本同じですが、アプリは普通のWebサイトアプリでクラウド環境ではない点は下記掲示板の質問と違う以外は同じです。

    http://stackoverflow.com/questions/2110660/c-response-writefile-vs-response-transmitfile-filesize-issues

     

    2010年7月30日 9:31
  • 全然根拠はなくてただの感ですが、以下のスレッドで話題になったことと関係ありそ
    うな気がします。

    Response.Close()するとchunkedエンコーディングされたレスポンスが途中で終わってしまう
    http://social.msdn.microsoft.com/Forums/ja-JP/aspnetja/thread/067d7e39-c922-4529-b5a1-ebc32a22409b

    紹介されたページでは、

    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.Close();

    を使ってましたが、この代わりに Response.End() にしたらどうなるでしょうか?

    ハズレでしたらすみません。

    2010年7月30日 13:33