2011-07-13 24 views
8

Webアプリケーションにカスタムエラーページを追加しようとしています。これまでのところ私は、要素の下に私のweb.configファイルにこれを追加しました:web.configを使用してIIS 7.5で既定のエラーページが表示されないようにする

<customErrors mode="On" > 
    <error statusCode="404" redirect="~/404.aspx"/> 
    <error statusCode="500" redirect="~/500.aspx"/> 
</customErrors> 

これは、.NETは、例えば、.aspxの拡張子を含むURLに触れるエラーの正常に動作します。しかし、カスタムエラーがwww.example.com/dasdaなどのURLに表示されるようにしたい場合

現在、上記のIIS 7.5のようなページを要求すると、それ自体のエラーメッセージが表示されます。私は要素の下にこれを追加しました:

<httpErrors > 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="~/404.aspx" responseMode="ExecuteURL" /> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="500" path="~/500.aspx" responseMode="ExecuteURL" /> 
</httpErrors> 

私は、これはIISがカスタムエラーページを表示する代わりに、それはデフォルトのものだが、このケースではないようになるだろうと思いました。

私はIIS自体でカスタムエラーページを設定できますが、自分の状況に最適なソリューションはweb.configでこれを設定できることです。

私はhere示唆したように、Page_Loadイベントに私のカスタムエラーページにこれを追加しようとしている:

  Response.TrySkipIisCustomErrors = true; 

それは私のカスタムエラーページの代わりに表示から、既定のIISページを停止していないが。私はまた示唆されたものを試しましたhere

<httpErrors > 
    <remove statusCode="404" subStatusCode='-1' /> 
    <error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    </httpErrors> 

しかし、これも機能しませんでした。

web.configファイルの設定を構成して、IISがデフォルトのエラーページを表示しないようにする方法はありますか?

答えて

14

を見ては、私が遭遇した問題は、デフォルトで次の持つ属性errorModeを持っているということでしたがあります オプション:DetailedLocalOnly、CustomまたはDetailed。

私がやっていたときにerrorMode属性が指定されていない場合、デフォルトはDetailedLocalOnly(ref)になります。つまり、表示されたカスタムエラーは表示されませんでした。働い

構成設定は以下の通りであった:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" subStatusCode='-1' /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="404" path="/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    <error statusCode="500" path="/500.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    </httpErrors> 

errorMode =「カスタム」ページが正しく機能しているカスタムのテストに便利ですが、省略するかerrorMode = "DetailedLocalOnlyに明示的に設定去ったとき、おそらくより便利です"デバッグの目的で使用します。

+1

これを投稿していただきありがとうございます。私はあなたの例と同じ問題を解決することができました。 – GibboK

+2

これも私の問題を解決しました。ありがとう! –

+1

errorModeフラグを発見してくれてありがとうございます。エフェクトの欠如は私の邪魔を迷惑にしていた。 – icelava

0

ユーザーが要求したリソースに対してIISがCustomErrorModuleを使用するように強制する必要があると思います。

<modules> 
     <add name="CustomErrorModule" type="customErrorModule" preCondition="" /> 
</modules> 

ウェブの設定に以下を追加しようとすることも、下記のリンク

https://serverfault.com/questions/53712/in-iis-7-how-do-i-set-up-a-default-error-document-for-any-error

+1

ありがとう、web.configのどの部分をこれに追加する必要がありますか?私はhttpModulesとモジュールセクションに入れてみましたがどちらもうまくいきませんでした。 – Aesir

+0

更新ありがとうございますが、まだ動作しませんでした。私はそれを働かせることができた。 – Aesir

関連する問題