小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


IIS5.1で4MBを超えるファイルをアップロードした場合にサーバーが見つからないか、または DNS エラーですと表示される件

はじめに

WindowsXP(IIS5.1)上でファイルアップロードのプログラム(ASP.NET)を動作させ、既定のファイルサイズ(4MB)を超える巨大なファイルをアップロードした場合に次のようなエラーになります。

  • ページは、表示できません。
  • サーバーが見つからないか、または DNS エラーです

これは、IIS5.1のバグです。IIS6の場合は、スタックトレースとともに適切なエラーメッセージが画面に表示されるのですが、IIS5.1の場合はページが表示できませんというエラーになってしまいます。

既定のファイルサイズを超えるファイルはアップロードできない

ASP.NETによるファイルアップロードでは、既定のファイルサイズ(4MB)*1を超えるファイルをアップロードできない仕様です。ですが、この問題は適切なエラーメッセージが画面に出ないことです。
これは、IIS5.1側の問題で、IIS6では正しいエラーメッセージが表示されるようになります。

以下のシナリオを考えます。 Web サーバーは、 Microsoft インターネット インフォメーション サービス 5.1(IIS)を実行しています。 Microsoft .NET Framework 上 2.0 に組み込まれた Microsoft ASP.NET Web ページは、 Web サーバーでホストされます。 FileUpload コントロールを使用すると、 Web ページでファイルをアップロードしようとします。 このシナリオで、次のエラー メッセージを表示します。
ページは、表示できません。
サーバーが見つからないか、または DNS エラーです
(中略)
この問題はファイル サイズが Machine.config ファイルの httpRuntime セクションでの maxRequestLength 属性に指定されるサイズを超えるのが原因で発生します。

この問題は、 IIS 6.0 で修正されます。 IIS 6.0 は、 Microsoft Windows Server 2003 に付属します。
IIS 5.1 に fileupload コントロールを使用すると、 ASP.NET Web ページでファイルをアップロードしようとすると、エラー メッセージを表示します。 はてなブックマーク - IIS 5.1 に fileupload コントロールを使用すると、 ASP.NET Web ページでファイルをアップロードしようとすると、エラー メッセージを表示します。

回避方法

この問題を回避するには、以下のような対処方法をとります。

  • 既定のファイルサイズ(maxRequestLength)の値を大きくし、4MBを超えるファイルをアップロードできるようにする。
  • アップリケーションエラーをトラップして、カスタムエラーページにリダイレクトする。

この問題を回避するために、エラーを取得し、そしてカスタム エラー ページにユーザーをリダイレクトするための Web アプリケーションの Global.asax ファイルの Application Error イベント ハンドラにコードを追加します。

*1:この数値は変更可能です。