Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET 4.5升级导致CorrelationManager.ActivityId为空_C#_Asp.net_.net_Logging_Trace - Fatal编程技术网

C# .NET 4.5升级导致CorrelationManager.ActivityId为空

C# .NET 4.5升级导致CorrelationManager.ActivityId为空,c#,asp.net,.net,logging,trace,C#,Asp.net,.net,Logging,Trace,长期以来,我们一直在使用CorrelationManager.ActivityId来帮助跨多个线程关联日志条目。我们在SessionStart上创建ActivityId,并将其存储在会话中,以便在所有后续请求中使用 protected void Session_Start(object sender, EventArgs e) { if (this.Session["ActivityId"] == null) { var a

长期以来,我们一直在使用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;
        }
    }
然后,我们从会话中重用它,如下所示:

    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;
            }
        }
    }
长期以来,上述方法一直完美地发挥作用

但是,一旦我们将web服务器升级到.NET 4.5.2,我们就会随机地为ActivityId记录空GUID(00000000-0000-0000-0000-000000000000)。我们通过降级到.NET2.0,然后安装4.0(不是4.5.2)来验证这一点,问题就消失了。在重新安装.NET 4.5.2之后,问题再次出现。为了确保安全,我们多次进行了这项练习


我找不到任何地方提到过类似的问题。我们正在联系Microsoft支持部门。

您是否得到过解决方案?我们也有类似的问题。我们在OWin中设置了它,但从未在WebAPI中设置过。