小编Chr*_*ins的帖子

.NET 4.5 升级结果为空 CorrelationManager.ActivityId

长期以来,我们一直在使用 CorrelationManager.ActivityId 来帮助关联多个线程的日志条目。我们在 SessionStart 上创建 ActivityId 并将其存储在会话中以用于所有后续请求。

    protected void Session_Start(object sender, EventArgs e)
    {
        if (this.Session["ActivityId"] == null)
        {
            var activityId = Guid.NewGuid();
            this.Session["ActivityId"] = activityId;
            System.Diagnostics.Trace.CorrelationManager.ActivityId = activityId;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我们从会话中重用它,如下所示:

    protected void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
        {
            if (this.Session["ActivityId"] != null)
            {
                System.Diagnostics.Trace.CorrelationManager.ActivityId = (Guid)this.Session["ActivityId"];
            }
            else
            {
                var activityId = Guid.NewGuid();
                this.Session["ActivityId"] = activityId;
                System.Diagnostics.Trace.CorrelationManager.ActivityId = activityId;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

上面已经完美地工作了很长时间。

但是,一旦我们将 Web 服务器升级到 .NET 4.5.2,我们就会随机为 ActivityId 记录空的 …

.net c# asp.net logging trace

5
推荐指数
0
解决办法
491
查看次数

标签 统计

.net ×1

asp.net ×1

c# ×1

logging ×1

trace ×1