我正在尝试修复现有代码,其中必须包括相关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;
}
答案 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);