2017-07-08 11 views
2

例外が発生したときに.NetコアWeb APIからの応答にヘッダーを追加しようとしています。ASP .NetコアのExceptionFilterAttributeに応答ヘッダーを追加する

私は、ヘッダーがクライアントに送信されていないいくつかの理由ExceptionFilterAttribute ...

public class ExceptionFilter : ExceptionFilterAttribute 
{ 
    public override void OnException(ExceptionContext context) 
    { 
     context.HttpContext.Response.Headers.Add("CorrelationId", "12345"); 
     base.OnException(context); 
    } 
} 

を使用しています。私はこれが、今の時点ですでに形成されているレスポンスとは関係があり、変更できないと考えていますか?

リクエストコンテキストに相関IDを追加してレスポンスヘッダに出力するカスタムミドルウェアがあります。例外が発生したときにこれは発生しません。そのため、フィルタを使用する別の方法が必要です。

これを動作させるにはどうすればよいですか?

答えて

1

は、明示的に例外フィルタからの出力を書き込むためにcontext.Resultを設定:

public override void OnException(ExceptionContext context) 
{ 
    context.HttpContext.Response.Headers.Add("CorrelationId", new string[] { "12345" }); 

    context.Result = new ObjectResult(null) { StatusCode = 500 }; 
    context.ExceptionHandled = true; 

    base.OnException(context); 
} 

これは実際の応答にヘッダーを追加します。

関連する問題