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