回答:
免責事項:これは私の経験によるものであり、証明された事実ではありません。
どちらもWebサイトのエラー処理を定義するために使用されますが、異なるソフトウェアは異なる構成要素を参照します。
customErrors
Visual Studio Development Server(別名VSDSまたはCassini)で使用されるレガシー(下位互換)要素です。
httpErrors
IIS7でのみ使用される新しい要素です。
これは、ローカルIISの代わりにVSDSを使用しているときにASP.NET Webサイトを開発するときに起こり得る問題を強調しています。
また、エラー出力を完全に制御したい場合は、IIS7でエラーメッセージを処理する方法について、この投稿を自分で参照してください。
VSDS
-使用中customErrors
IIS6
-使用customErrors
IIS7
使用するhttpErrors
。で開発しVSDS
、に公開するIIS7
場合は、両方が必要になると思います。
* 2016年4月更新
customErrors属性は、.netコードが例外(404、403、500など)をスローしているときに使用され、httpErrors属性はIIS自体が例外をスローしているときに使用されます。
これを正しく設定しようとすると、多くの落とし穴があります。したがって、簡単な例を探している場合、2つの最適なオプションは次のとおりです。
例1:HTMLページの使用
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
<error statusCode="403" redirect="/Error403.html" />
<error statusCode="404" redirect="/Error404.html" />
<error statusCode="500" redirect="/Error500.html" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
<remove statusCode="403" />
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="403" responseMode="File" path="Error403.html" />
<error statusCode="404" responseMode="File" path="Error404.html" />
<error statusCode="500" responseMode="File" path="Error500.html" />
</httpErrors>
</system.webServer>
例2:aspxページの使用
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
<error statusCode="403" redirect="/Error403.aspx" />
<error statusCode="404" redirect="/Error404.aspx" />
<error statusCode="500" redirect="/Error500.aspx" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
<remove statusCode="403" />
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="403" responseMode="ExecuteURL" path="Error403.aspx" />
<error statusCode="404" responseMode="ExecuteURL" path="Error404.aspx" />
<error statusCode="500" responseMode="ExecuteURL" path="Error500.aspx" />
</httpErrors>
</system.webServer>
そして、aspxエラーページでは、次のようなことを行う必要があります(404ページの例):
<%
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true;
%>
注:customErrorsセクションで拡張なしURLを使用することはできません!。(ハックなし)
回避策の1つは、カスタムエラーを無効にし、httpエラーにカスタムページを処理させることです。友人がそのような設定を作成しました。時間があれば、コードを共有します。
バックグラウンド
適切なカスタムエラーページは次のようになります。
したがって、設定のいくつかのオプションを明確にするために:
<customErrors mode="RemoteOnly"
。あなたがここに指定することができますOn
、Off
、RemoteOnly
。
On
=常にカスタムエラーページを表示するOff
=常に実際のエラーを表示RemoteOnly
=エラーをローカルに表示しますが、カスタムエラーページをリモートに表示します。したがってRemoteOnly
、ステートメント1が必要です<customErrors redirectMode="ResponseRewrite"
。ここで指定できます:ResponseRedirect
またはResponseRewrite
。ResponseRedirect
モードは、カスタムエラーページにエラーページにリダイレクトされます。リンククローラー(SEO)の場合、これは302-> 500になりますが、リンククローラーが500エラーを受け取るようにします。
<httpErrors errorMode="DetailedLocalOnly"
。これはcustomErrors
モードと同等です。あなたが持っているオプション:Custom
、Detailed
、DetailedLocalOnly
。
私を大いに助けてくれた優れたブログ投稿は次のとおりです。http://benfoster.io/blog/aspnet-mvc-custom-error-pages
<customErrors>
対 <httpErrors>
<customErrors>
<httpErrors>
注:使用する必要はなくなりました
customErrors
引用ソース:ASP.NETのカスタム404およびエラーページ(優れた記事)
ExecuteURL
.aspxページなどの動的コンテンツを提供します(path
値はサーバーの相対URLである必要があります):
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
<remove statusCode="404"/>
<error statusCode="404" responseMode="ExecuteURL" path="/error.aspx" />
</httpErrors>
</system.webServer>
File
.htmlページなどのカスタムエラーファイルを提供します。
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="File" >
<remove statusCode="404"/>
<error statusCode="404" path="404.html" />
</httpErrors>
</system.webServer>
参照:HTTPエラー(www.iis.net)
詳細については、上のwww.iis.netリンクをお読みください
it's no loger necesary to use customErrors
と引用の+1 、これは実際に私が求めていた情報です:-)
web configのErrorsセクションは、カスタムhttpエラー処理アプローチを提供するためのものです。system.webセクション内のcustomErrorsとsystem.webServerセクション内の別のhttpErrorsの2つのセクションがあります(以下を参照)。
customErrors: このセクションは、IIS 7が導入される前、IIS 6 5が使用される前、およびこのセクションを完全に使用してhttpステータスコードに従ってカスタムhttpエラーを処理する前に使用されていました。
httpErrors: IIS 7以降では、このセクションとcustomErrorsセクションを使用して、index.aspxのようなISAPI dll(.aspx、ashx、.asmx、.svcなど)でページ拡張子の登録が要求された場合、ファイル拡張子に基づいてカスタムhttpエラーを処理します。 IISはcustomeErrorsセクションから設定を取得します。それ以外の場合はhttpErrorsから設定を取得します(IIS 7ホストモードはクラシックではなく統合されたムードとして設定する必要があります)
以下は、404エラー処理チェックリンクの例です。