[PRB] HtmlInputFile サーバー コントロールを使用するとサイズの大きなファイルをアップロードできない

文書翻訳 文書翻訳
文書番号: 295626 - 対象製品
この記事は、以前は次の ID で公開されていました: JP295626
すべて展開する | すべて折りたたむ

現象

HtmlInputFile コントロールを使用してサイズの大きなファイルをアップロードしようとしたときに、そのファイルがアップロードされない場合があります。

原因

この問題は、Machine.config ファイルの <httpRuntime> セクションの maxRequestLength パラメータのデフォルト値が 4,096 (4 MB) になっているために発生します。そのため、デフォルトでは、この値よりもサイズの大きいファイルはアップロードされません。

解決方法

この問題を解決するには、以下のいずれかの方法を使用します。
  • Machine.config ファイルで、<httpRuntime> 構成セクションの maxRequestLength 属性を、デフォルト値よりも大きな値に変更します。この変更は、コンピュータ全体に影響します。
  • Web.config ファイルで、アプリケーションごとに maxRequestLength の値を上書きします。たとえば、Web.config に次のエントリがある場合、8 MB 以下のファイルをアップロードできます。
    <httpRuntime maxRequestLength="8192" />
    					

詳細

デフォルトでは、この値は、サービス拒否攻撃に対する防御策として 4 MB に制限されています。

Machine.config ファイルで maxRequestLength 属性が設定されている場合に、maxRequestLength の値を超える要求 (たとえば、ファイルのアップロード) が送信されると、カスタム エラー ページが表示されず、Microsoft Internet Explorer には "サーバーが見つからないか、DNS エラーです。" というエラー メッセージが表示されます。

理論的には、アップロードできる最大のファイル サイズはかなり大きいものです。しかし、ASP.NET の稼動状態の監視が原因で、ASP.NET では大きいサイズのファイルをアップロードできません。ASP.NET のワーカー プロセスには、2 GB の仮想アドレス空間がありますが、 稼動状態の監視とメモリの断片化のため、ASP.NET のワーカー プロセスで使用するメモリは 1 GB を若干上回る程度です。

アップロード処理の際には、ASP.NET によってファイル全体がメモリに読み込まれるまで、ユーザーはファイルをディスクに保存することができません。そのため、Machine.config ファイル内の processModel タグの memoryLimit 属性によって、このプロセスはリサイクルされます。memoryLimit 属性では、ASP.NET ワーカー プロセスが自動的にリサイクルされる前に、ASP.NET ワーカー プロセスで消費できる物理メモリ量の割合を指定します。リサイクルを行うことで、ASP.NET のクラッシュや応答停止などを引き起こすメモリ リークを防止できます。

また、アップロード可能な最大ファイル サイズに影響を与える要因は他にもあります。これには、使用できるメモリ、ハード ディスクの空き領域、プロセッサの速度、および、現在のネットワーク トラフィックが含まれます。標準的なトラフィックでファイル アップロードが行われている場合、10 〜 20 MB の範囲の最大ファイル サイズを使用することをお勧めします。ファイルのアップロードをまれにしか行わない場合は、最大ファイル サイズを 100 MB に設定することもできます。

: ASP.NET では 100 MB を超えるファイルをアップロードできますが、アップロードするファイルの最大サイズについては、この資料に記載されている内容に従うことを推奨します。ファイルの最大アップロード サイズをより厳密に決定するには、実際の運用環境に近いコンピュータでストレス テストを実行してください。

ファイルのアップロード処理の際にファイル サイズが制限を超えると、次のエラー メッセージが表示される場合があります。
  • ページを表示できません。
  • サーバー アプリケーションは使用できません。
    イベント ログには、次のようなエラー メッセージが出力されます。

    メモリ使用が SizeLimit MB (使用可能 RAM の Percentage%) を超えたため、aspnet_wp.exe (PID: PIDNumber) が繰り返されました。

  • 種類 System.OutOfMemoryException の例外がスローされました。
また、アップロードが非常に低速になる場合もあります。Windows タスク マネージャで Aspnet_wp.exe プロセスを観察すると、メモリ使用量の増分が 1 〜 2 秒ごとに 64 KB ずつ変化していることがわかります。ファイルのサイズによっては、この遅延により responseDeadlock エラーが発生し、ASP.NET のワーカー プロセスがリサイクルされる場合があります。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 295626 (最終更新日 2003-11-04) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 295626 - 最終更新日: 2007年10月26日 - リビジョン: 6.3
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
キーワード:?
kbproductlink kbconfig kbprb kbservercontrols KB295626
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com