gpt4 book ai didi

c# - Asp.Net Core 是否跨请求保留 CallContext?

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:27 25 4
gpt4 key购买 nike

Asp.Net Core 是否跨请求保留 CallContext?

我们有一个将上下文属性(用户名)附加到线程的用例,它可以从我们的日志框架(NLog,MDLC)中提取。据我所知,MDLC 使用 CallContext

我们需要每个请求都具有干净的上下文属性。是否需要一开始就清除CallContext?

最佳答案

NLog.Web.AspNetCore提供了许多布局渲染器,可以捕获 HttpRequest-context-properties 以进行日志记录(无需注入(inject) NLog MDLC)。

这将探测 HttpRequest-Header 的值 JSNLog-RequestId,如果为空则回退到 AspNetCore-RequestId,如果也为空则回退到 AspNetCore-TraceIdentifer

${aspnet-request:header=JSNLog-RequestId:whenEmpty=${mdlc:item=RequestId:whenEmpty=${aspnet-traceIdentifier}}}

可用列表 ${aspnet} Layout-renderers

NLog 使用 AsyncLocal在 NetCore 上,如果您使用的是 Microsoft 扩展日志记录 (MEL),则可以使用 ILogger.BeginScope将属性注入(inject) NLog MDLC (离开范围时清除)

NLog MDLC也可以使用MappedDiagnosticsLogicalContext.SetScoped来填充离开使用范围时也会清除。

关于c# - Asp.Net Core 是否跨请求保留 CallContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56129880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com