5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IISの404エラーページが返るようになった時の対処法

Posted at

はじめに

IISを使っているプロジェクトで404エラーページを表示させるときにハマったことがあったので紹介します。

アプリケーション側でエラーページを実装したところローカルでは表示されるのに、
外部からアクセスすると**「404 ファイルまたはディレクトリが見つかりません。」**というページが表示されます。

実はこのエラーページへはIISの404カスタムエラーページで、
IISのApplicationHost.config/httpErrorsの設定が影響するようです。

httpErrorsとは

statusコード400以上のレスポンスの振る舞いを設定できるconfig項目です。
ApplicationHost.config/httpErrors配下の属性のうち、今回関連のあるerrorModeについて説明していきます。

errorMode属性

HTTP エラーを有効にするかどうかを指定する。デフォルトはDetailedLocalOnly。

errorMode 説明
DetailedLocalOnly アクセスがローカルPCからの場合は詳細エラーを返し、外部PCからの場合はカスタムエラーを返す。
Custom サーバーが生成する詳細エラーをカスタムエラーで置き換えて返す。
Detailed サーバーが生成する詳細エラーを返す。
※ApplicationHost.config/httpErrorsの設定はIISの構成エディターからできます。

リファレンス

わかりづらいので補足すると

詳細エラーというのはアプリケーション側で実装したエラーページカスタムエラーというのはIISのカスタムエラーページを指しています。

  • DetailedLocalOnlyはローカルアクセスのときはアプリケーション側で実装したエラーページを表示して、外部アクセスの時はIISのカスタムエラーページを表示します。

  • Customはローカル・外部アクセス問わずIISのカスタムエラーページを表示します。

  • Detailedはローカル・外部アクセス問わずアプリケーション側で実装したエラーページを表示します。

つまり・・・

今回はerrorMode属性がデフォルトのままDetailedLocalOnlyだったことにより
IISのカスタムエラーページが表示されました。
なのでDetailedに設定することでIISのカスタムエラーページが表示されなくなりました。

※IISのカスタムエラーページを使用する場合はこちらから設定可能です。

検証環境

IIS: 10.0

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?