none
IIS8のファイルダウンロードサイズの設定について RRS feed

  • 質問

  • お世話になります。

    現在、下記の環境でWebシステムを開発しております。

    Windows server2012(64bit) + IIS8

    ASP.net(.NetFrameWork4.5)

    IIS6/IIS7では、ダウンロード可能なファイルサイズをbufferinglimitに設定しており、

    その初期値は4M₍それを超えるサイズのファイルは正常にダウンロードできない)と認識しております。

    IIS8でもダウンロードサイズの設定は同じだと思ったのですが、

    bufferinglimitが初期値(4194304)のままで、4Mを超えるサイズ(10M等)のファイルがダウンロードできています。

    知りたいことは、

    1.IIS8の初期設定の状態で、ダウンロード可能なファイルサイズは幾つか?

    2.ダウンロード可能なファイルサイズを変更する場合は、どの設定値を変更すればいいか?

    以上の2つです。

    よろしくお願いいたします。

    2015年2月24日 15:02

回答

  • > IIS6/IIS7では、ダウンロード可能なファイルサイズをbufferinglimitに設定しており、
    > その初期値は4M₍それを超えるサイズのファイルは正常にダウンロードできない)と認識しております。

    それはクラシック ASP の話ではないですか?

    bufferinglimit でググって調べてみたらクラシック ASP で以下のようなことがあるそうですが、ASP.NET ではそのような制限は聞いたことがないです。(自分が知らないだけという可能性は否定し切れませんが)

    ASP 制限 <limits>
    https://technet.microsoft.com/ja-jp/library/ee431613.aspx

    開発しているのは ASP.NET の Web アプリで間違いないんですよね? だから、

    > bufferinglimitが初期値(4194304)のままで、4Mを超えるサイズ(10M等)のファイルがダウンロードできています。

    という結果になったのだと思いますが。

    ASP.NET の Web アプリの場合、ファイルのダウンロードに使うのは、HttpResponse.WriteFile メソッドまたは HttpResponse.TransmitFile メソッドですが、質問者さんはどのようにしているのでしょう?

    HttpResponse.WriteFile メソッドを使うとメモリにバッファリングされるので Web サーバーのメモリの制約の関係でサイズの大きなファイルはダウンロードに失敗するという問題はよく聞きます。それを解決するために、HttpResponse.WriteFile メソッドに代えて HttpResponse.TransmitFile メソッドを使うという解決方法が用意されています。

    というわけで、自分が知る限りですが、

    > 1.IIS8の初期設定の状態で、ダウンロード可能なファイルサイズは幾つか?

    WriteFile メソッドを使う場合 Web サーバーのメモリによる(具体的な値は分かりません)。TransmitFile メソッドを使う場合制限はない。ただし、executionTimeout の設定に引っかかっることはあるかもしれません。 
     
    > 2.ダウンロード可能なファイルサイズを変更する場合は、どの設定値を変更すればいいか?

    サイズを制限するような設定はない。もし、あるサイズ以下に制限したい場合は、自分でコードを書いて対応するということはもちろん可能ですが。

    ・・・ということになると思います。

    • 回答の候補に設定 佐伯玲 2015年2月25日 1:26
    • 回答としてマーク dev_tktk 2015年3月3日 15:01
    2015年2月24日 15:40

すべての返信

  • > IIS6/IIS7では、ダウンロード可能なファイルサイズをbufferinglimitに設定しており、
    > その初期値は4M₍それを超えるサイズのファイルは正常にダウンロードできない)と認識しております。

    それはクラシック ASP の話ではないですか?

    bufferinglimit でググって調べてみたらクラシック ASP で以下のようなことがあるそうですが、ASP.NET ではそのような制限は聞いたことがないです。(自分が知らないだけという可能性は否定し切れませんが)

    ASP 制限 <limits>
    https://technet.microsoft.com/ja-jp/library/ee431613.aspx

    開発しているのは ASP.NET の Web アプリで間違いないんですよね? だから、

    > bufferinglimitが初期値(4194304)のままで、4Mを超えるサイズ(10M等)のファイルがダウンロードできています。

    という結果になったのだと思いますが。

    ASP.NET の Web アプリの場合、ファイルのダウンロードに使うのは、HttpResponse.WriteFile メソッドまたは HttpResponse.TransmitFile メソッドですが、質問者さんはどのようにしているのでしょう?

    HttpResponse.WriteFile メソッドを使うとメモリにバッファリングされるので Web サーバーのメモリの制約の関係でサイズの大きなファイルはダウンロードに失敗するという問題はよく聞きます。それを解決するために、HttpResponse.WriteFile メソッドに代えて HttpResponse.TransmitFile メソッドを使うという解決方法が用意されています。

    というわけで、自分が知る限りですが、

    > 1.IIS8の初期設定の状態で、ダウンロード可能なファイルサイズは幾つか?

    WriteFile メソッドを使う場合 Web サーバーのメモリによる(具体的な値は分かりません)。TransmitFile メソッドを使う場合制限はない。ただし、executionTimeout の設定に引っかかっることはあるかもしれません。 
     
    > 2.ダウンロード可能なファイルサイズを変更する場合は、どの設定値を変更すればいいか?

    サイズを制限するような設定はない。もし、あるサイズ以下に制限したい場合は、自分でコードを書いて対応するということはもちろん可能ですが。

    ・・・ということになると思います。

    • 回答の候補に設定 佐伯玲 2015年2月25日 1:26
    • 回答としてマーク dev_tktk 2015年3月3日 15:01
    2015年2月24日 15:40
  • SurferOnWww様

    返信が遅くなりまして、申し訳ありませんでした。

    丁寧なご回答ありがとうございます。

    bufferinglimitが、クラシックASPとASP.NETどちらの場合でも関係のある値と勘違いしておりました。

    今回の開発はASP.NETのため、

    > サイズを制限するような設定はない。

    また、

    > WriteFile メソッドを使う場合 Web サーバーのメモリによる(具体的な値は分かりません)。TransmitFile メソッドを使う場合制限はない。ただし、executionTimeout の設定に引っかかっることはあるかもしれません。

    と理解いたしました。

    初歩的な質問に答えていただきまして、ありがとうございました。

    2015年3月3日 15:12