サーチ…


前書き

すべてのウェブサイトはエラーを処理する必要があります。あなたは、ユーザーに、IISが料理するストック404または500のエラーページを表示させたり、Web.Configとシンプルなコントローラを使用して、これらのエラーをキャプチャして独自のカスタムエラーページを提供することができます。

基本設定

この例では、404 Page Not Foundおよび500 Server Errorのカスタムエラーページの作成について説明します。このコードを拡張して、必要なエラーコードをキャプチャすることができます。

Web.Config

IIS7以上を使用している場合は、 <CustomError.. nodeを無視し、代わりに<httpErrors...使用してください。

system.webServerノードに次のsystem.webServerを追加します。

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error statusCode="404" path="/error/notfound" responseMode="ExecuteURL" />
    <error statusCode="500" path="/error/servererror" responseMode="ExecuteURL" />
 </httpErrors>

これは、404エラーを~/error/notfoundに、500エラーを~/error/servererrorます。また、リクエストされたURL( リダイレクトではなく転送 )を保存するので、ユーザーは~/error/...ページURLを見ることはありません。

次に、新しいErrorコントローラが必要です。

public class ErrorController : Controller
{
    public ActionResult servererror()
    {
        Response.TrySkipIisCustomErrors = true;
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return View();
    }

    public ActionResult notfound()
    {
        Response.TrySkipIisCustomErrors = true;
        Response.StatusCode = (int)HttpStatusCode.NotFound;
        return View();
    }

} 

ここで重要なのは、 Response.TrySkipIisCustomErrors = true; 。これはIISをバイパスし、エラーページを強制的に通過させます。

最後に、対応するNotFoundビューとServerErrorビューを作成し、それらのスタイルを設定して、サイトのデザインにNotFoundシームレスに表示します。

ちょっと前のカスタムエラーページ。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow