トップ回答者
IIS8のファイルダウンロードサイズの設定について

質問
-
お世話になります。
現在、下記の環境でWebシステムを開発しております。
Windows server2012(64bit) + IIS8
ASP.net(.NetFrameWork4.5)
IIS6/IIS7では、ダウンロード可能なファイルサイズをbufferinglimitに設定しており、
その初期値は4M₍それを超えるサイズのファイルは正常にダウンロードできない)と認識しております。
IIS8でもダウンロードサイズの設定は同じだと思ったのですが、
bufferinglimitが初期値(4194304)のままで、4Mを超えるサイズ(10M等)のファイルがダウンロードできています。
知りたいことは、
1.IIS8の初期設定の状態で、ダウンロード可能なファイルサイズは幾つか?
2.ダウンロード可能なファイルサイズを変更する場合は、どの設定値を変更すればいいか?
以上の2つです。
よろしくお願いいたします。
回答
-
> 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.ダウンロード可能なファイルサイズを変更する場合は、どの設定値を変更すればいいか?サイズを制限するような設定はない。もし、あるサイズ以下に制限したい場合は、自分でコードを書いて対応するということはもちろん可能ですが。
・・・ということになると思います。
すべての返信
-
> 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.ダウンロード可能なファイルサイズを変更する場合は、どの設定値を変更すればいいか?サイズを制限するような設定はない。もし、あるサイズ以下に制限したい場合は、自分でコードを書いて対応するということはもちろん可能ですが。
・・・ということになると思います。
-
SurferOnWww様
返信が遅くなりまして、申し訳ありませんでした。
丁寧なご回答ありがとうございます。
bufferinglimitが、クラシックASPとASP.NETどちらの場合でも関係のある値と勘違いしておりました。
今回の開発はASP.NETのため、
> サイズを制限するような設定はない。
また、
> WriteFile メソッドを使う場合 Web サーバーのメモリによる(具体的な値は分かりません)。TransmitFile メソッドを使う場合制限はない。ただし、executionTimeout の設定に引っかかっることはあるかもしれません。
と理解いたしました。
初歩的な質問に答えていただきまして、ありがとうございました。