システム開発ブログ

ソフトウエア開発部

IISのデータ量制限

IISには、POSTする際のデータ量、
また、aspでページを描画する際のデータバッファ量に制限がかかっています。

POSTする際のデータ量というのは、
アップロードするファイルだけではなく、
input type="text"等で入力された文字列のバイトデータ量も含まれます。

そうそうあることではないですが、
動的に件数を変更可能な明細登録画面などでは、
TEXT等のコントロールが数百~数千件になってしまうことがあります。

このような時、各コントロールに入力された文字が
半角で約20万5000文字(200KByte)を超えると、
Post処理を行った際にWebブラウザ上で
エラーコード「500 Internal Server Error」が発生します。

「500 Internal Server Error」だけではアバウトすぎて
完全にエラーを特定できないので、IISのログを確認します。
(C:\WINDOWS\system32\LogFiles\W3SVC1\exyymmdd.log)※yymmddはログの日付
このログに「ASP 0104」のエラーログがあれば、以下の要領で対応ができます。

これは、IISの「AspMaxRequestEntityAllowed」というプロパティが
デフォルトで204800バイトに設定されているため、
この制限を越えてデータ送信をしてしまったために発生するエラーです。

エラーを回避するためには、この制限値を上げる必要があります。

コマンドプロンプトからコマンドで設定変更も可能ですが、
この場合はIISの再起動が必要となってしまうので、
MetaBase.XMLを編集すると簡単に対応ができます。
ただし、必ずMetaBase.XMLのバックアップを必ずとり、
すぐにリカバリーできる状態で行ってください。

手順は以下のとおりです。
1.コントロールパネル→インターネットインフォメーションサービス→ローカルコンピュータ→プロパティ
2.「メタベースの直接編集を有効にする」にチェックを付ける
3.C\Windows\System32\inetsev\MetaBase.XMLを開く
4.AspMaxRequestEntityAllowedの値が"204800"なので、必要に応じて変更する。
※最大値は1,073,741,824です。

また、このエラーに遭遇した場合、
aspでページを描画する際のデータバッファ量の制限にも到達する恐れがあります。
こちらは、AspBufferingLimitという設定を変更することで対応できます。

AspMaxRequestEntityAllowedでエラーになった場合は、
AspBufferingLimitの設定も見直しておく方が後々の手間を減らせると思います。

Micrsoftの公式サポート情報は以下のとおりです。
http://support.microsoft.com/kb/327659/ja
http://support.microsoft.com/kb/925764/ja

システム周りのお悩みを解決します

まずは無料ダウンロード

この記事に関連する記事の一覧


システム開発ブログ

Twitterでilovex_officialをフォローしてください

カテゴリー

以前の部署別ブログ

ページのトップ