如何在OnRemoteFailure属性上传递相关ID

时间:2018-10-23 21:28:28

标签: c# error-handling

我正在尝试修复现有代码,其中必须包括相关ID以跟踪错误。我已经使用OnRemoteFailure属性来处理“访问被拒绝”错误。如果有人可以帮助您将相关性ID传递给它,那将是很棒的。 代码:

   OnRemoteFailure = (context) =>
                {

                    // Redirect to an unauthorized page
                    context.HandleResponse();
                    _logger.LogWarning("Remote failure with message {Response}", context.Failure.Message);
                    context.Response.Redirect($"/Account/AccessDenied?e=RemoteFailure");
                    return Task.CompletedTask;
                }

1 个答案:

答案 0 :(得分:0)

假设您将correlationIdId存储在Request.Headers(或可能存储在Items)中,则可以检索它,然后将其添加到日志中。像这样:

var correlationId = context.Request.Headers.ContainsKey("CorrelationId")? 
                      context.Request.Headers["CorrelationId"].First()
                    : null;

如果您不想手动推送correlationId属性,则可以使用记录器的全局属性。对于Serilog,您可以在现有的中间件上使用PushProperty方法:

LogContext.PushProperty("CorrelationId", correlationIdValue);