如何从requestTelemetry获取会话ID?

问题描述 投票:0回答:1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MyLibrary.Web.Context;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;


namespace ACME.Foundation.Analytics
{
    public class ApplicationInsightsSessionInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            var requestTelemetry = telemetry as RequestTelemetry;
            if (requestTelemetry == null) return;

            if (HttpContext.Current.Session.SessionID != null)
            {
                telemetry.Context.Session.Id = HttpContext.Current.Session.SessionID;
            }
        }
    }
}

在ApplicationInsights.config中

<Add Type="ACME.Foundation.Analytics.ApplicationInsightsSessionInitializer, ACME.Foundation.Analytics" />
<Add Type="Microsoft.ApplicationInsights.StatusMonitor.SdkSourceTelemetryInitializer, Microsoft.AI.StatusMonitor" />

如何从requestTelemetry获取会话ID?我在我的分析遥测文件夹中有这个片段。看起来好像itemType请求没有会话ID。每次出现请求时,会话都为空。

我想将它与正确的sessionID匹配,并且无法在app insights sessionID中覆盖它

我跟随这里的例子:https://docs.microsoft.com/en-us/azure/application-insights/app-insights-usage-send-user-context

并将我的解决方案基于位于页面中间的演示,但似乎并不适合我。

任何帮助,将不胜感激!

c# azure-application-insights
1个回答
0
投票

按照@Dmitry的说法,这个例子是不正确的。

还有另一种方法可以设置sessionid,你可以参考这个link

private static TelemetryClient GetTelemetryClient()
{
var telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "<your actual insight instrumentkey>";
telemetryClient.Context.Session.Id = "124556";
//update 1-Custom properties- Start
telemetry.Context.Properties["tags"] = "PROD";
telemetry.Context.Properties["userCorelateId"]="1234"; 
//update 1-Custom properties- Ends                
return telemetryClient;
} 
© www.soinside.com 2019 - 2024. All rights reserved.