ASP.NET MVCアプリケーションのweb.configファイルのcustomErrors
セクションとhttpErrors
セクションの違いは何ですか?
各セクションを使用するためのガイドラインは何ですか?
免責事項:これは私の経験によるものであり、証明された事実ではありません。
どちらもウェブサイトのエラー処理を定義するために使用されますが、異なるソフトウェアは異なる構成要素を参照します。
customErrors
は、Visual Studio開発サーバー(別名:VSDSまたはCassini)で使用されるレガシー(下位互換)要素です。
httpErrors
は、IIS7でのみ使用される新しい要素です。
これは、ローカルIISの代わりにVSDSを使用しながらASP.NET Webサイトを開発する際のpossible問題を強調しています。
また、エラー出力を完全に制御したい場合は、 この投稿を自分で参照してください 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エラーにカスタムページを処理させることです。友人がそのようなセットアップを作成しました。しばらくしたら、コードを共有します。
背景
適切なカスタムエラーページは次のようになります。
Configのいくつかのオプションを明確にするために:
<customErrors mode="RemoteOnly"
。ここで指定できます:On
、Off
、RemoteOnly
。
On
=カスタムエラーページを常に表示するOff
=常に実際のエラーを表示RemoteOnly
=エラーをローカルに表示しますが、リモートでカスタムエラーページを表示します。したがって、ステートメント1にはRemoteOnly
が必要です。<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リンクをお読みください
Web構成のエラーセクションは、カスタムHTTPエラー処理アプローチを提供するためのものです。2つのセクションがあります。1つはセクションsystem.web内のcustomErrors、もう1つはセクションsystem.webServer内のhttpErrorsです(以下を参照)。
customErrors:このセクションは、IIS 7が導入される前、IIS 6 5およびこれを完全に使用する前に使用されていました。 HTTPステータスコードに従ってカスタムHTTPエラーを処理するセクション。
httpErrors:IIS 7以降では、このセクションとcustomErrorsindex.aspxのようなISAPI dll(.aspx、ashx、.asmx、.svcなど)を使用してページ拡張レジスタを要求した場合、ファイル拡張子に基づいてカスタムhttpエラーを処理するセクションIIS pick customeErrorsセクションから設定をアップするか、httpErrors(IIS 7ホストモードは、クラシックではなく統合ムードとして設定する必要があります)
以下は、404エラー処理チェックリンクの例です。