サーチ…


カスタムエラーページにリダイレクトする

ASP.NET Coreは、いくつかの異なる拡張メソッドをサポートするステータスコードページミドルウェアを提供していますが、 UseStatusCodePagesUseStatusCodePagesWithRedirectsUseStatusCodePagesありUseStatusCodePagesWithRedirects

  • UseStatusCodePagesは、指定されたオプションを持つStatusCodePagesミドルウェアを追加します。このミドルウェアは、本体がない状態コード400〜599の応答をチェックします。リダイレクトの使用例:

    app.UseStatusCodePages(async context => {
      //context.HttpContext.Response.StatusCode contains the status code
    
      // your redirect logic
    
    });
    
  • UseStatusCodePagesWithRedirectsは、StatusCodePagesミドルウェアをパイプラインに追加します。指定されたURLテンプレートを使用してリダイレクトすることで応答を処理するように指定します。これには、ステータスコードの '{0}'プレースホルダが含まれている可能性があります。 '〜'で始まるURLはPathBaseを先頭に付け、他のURLはそのまま使用されます。たとえば、以下は〜/ errors / <error_code>にリダイレクトされます(たとえば、403エラーの場合は〜/ errors / 403)。

    app.UseStatusCodePagesWithRedirects("~/errors/{0}");
    

ASP.NETコアでのグローバル例外処理

UseExceptionHandlerを使用すると、例外をグローバルに処理できます。スタックトレース、内部例外などの例外オブジェクトの詳細をすべて取得できます。そして、それらを画面に表示することができます。このように簡単に実装できます。

app.UseExceptionHandler(
 options => {
    options.Run(
    async context =>
    {
      context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
      context.Response.ContentType = "text/html";
      var ex = context.Features.Get<IExceptionHandlerFeature>();
      if (ex != null)
      {
        var err = $"<h1>Error: {ex.Error.Message}</h1>{ex.Error.StackTrace }";
        await context.Response.WriteAsync(err).ConfigureAwait(false);
      }
    });
 }
);

これをstartup.csファイルのconfigure()の中に入れる必要があります。



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