HTTP ステータス エラーごとに異なるメッセージを表示する一般的なエラー ページをデザインしたいと考えています。出来ますか?
<customErrors mode="RemoteOnly" redirect="GenericErrorPage.htm">
たとえば、
error statusCode="403"
次に表示
Access Denied!
ありがとう。
HTTP ステータス エラーごとに異なるメッセージを表示する一般的なエラー ページをデザインしたいと考えています。出来ますか?
<customErrors mode="RemoteOnly" redirect="GenericErrorPage.htm">
たとえば、
error statusCode="403"
次に表示
Access Denied!
ありがとう。
はい、可能です。次のようなことを試してください。
<customErrors mode="On">
<error redirect="~/GenericError.aspx" statusCode="404"/>
</customErrors>
ただし、IIS 7 で Web アプリケーションをホストしている場合は、次のようにカスタム エラーを定義する必要があることに注意してください。
<system.webServer>
<httpErrors existingResponse="Replace" errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="GenericError.aspx" responseMode="Redirect" />
</httpErrors>
</system.webServer>
一般的な ASPX エラー ページを作成し、HTML エラー ステータス コードに応じてエラー メッセージを表示する場合は、次のようにします。
(私はちょうどテストし、動作します)
redirectMode="ResponseRewrite"
属性をcustomErrors
セクションに追加します。
<customErrors mode="On" defaultRedirect="~/GenericError.aspx" redirectMode="ResponseRewrite" />
一般的なエラー ページ (Page_Load イベント) で:
var ex = HttpContext.Current.Server.GetLastError();
this.lblMessage.Text += "<br/>" + ex.Message + ex.GetType().ToString();
if (ex is HttpException)
{
var nex = ex as HttpException;
this.lblMessage.Text += " " + nex.GetHttpCode().ToString();
switch (nex.GetHttpCode())
{
case 404:
// do somehting cool
break;
case 503:
// do somehting even cooler
break;
default:
break;
}
}