gpt4 book ai didi

c# - 管理 Application Insights Cookie

转载 作者:可可西里 更新时间:2023-11-01 08:44:55 24 4
gpt4 key购买 nike

我想知道应用程序洞察力如何与 cookie 一起使用,因为我想了解用户和 session 跟踪,所以我一直在研究并...

这里简单介绍一下这个理论:

  1. Whenever Application Insights SDK get a request that doesn’t have application insights user tracking cookie (set by Application Insights JS snippet) it will set this cookie and start a new session. (from apmtips )

2.

UserTelemetryInitializer updates the Id and AcquisitionDate properties of User context for all telemetry items with values extracted from the ai_user cookie generated by the Application Insights JavaScript instrumentation code running in the user's browser.

SessionTelemetryInitializer updates the Id property of the Session context for all telemetry items with value extracted from the ai_session cookie generated by the ApplicationInsights JavaScript instrumentation code running in the user's browser. (from azure documentation (Configuring the Application Insights SKD with ApplicationInsights.config))

所以有两个 cookie:ai_sessionai_user

我的问题来了:

  1. 它们什么时候初始化?
  2. 它在做什么?
  3. 我怎样才能停止使用它们?
  4. 如果我想保留它们,我该如何更改它们的过期时间?

为了删除它们,我使用 ASP.NET Web 应用程序使用 Web Api 的默认模板创建了一个项目,其中包括 MVC 和 Web Api。

做一个研究我发现 this approach禁用它们,但我没有任何 WebSessionTrackingTelemetryModule。所以我注释掉了“UserTelemetryInitializer”和“SessionTelemetryInitializer”,这就是我所拥有的:

<TelemetryInitializers>

<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SyntheticTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ClientIpHeaderTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserAgentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationNameTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationIdTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />

<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />-->
<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SessionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />-->

<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.AzureRoleEnvironmentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DomainNameRoleInstanceTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DeviceTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />


</TelemetryInitializers>

和:

<TelemetryModules>

<Add Type="Microsoft.ApplicationInsights.Extensibility.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.DependencyCollector" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ExceptionTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />

</TelemetryModules>

但这并没有什么不同。无论我是否对模块进行评论,cookie 仍在生成中。

尝试删除 cookie,我评论了启动中完成的步骤,并从我的项目中排除了所有 .js 文件,但 cookie 在每次请求后继续出现。

所以此时我不明白“Application Insights Javascript”在哪里发生,我想我缺少的是后端的东西。我错了吗?

最后,我评论的 Startup.cs 看起来像:

[assembly: OwinStartupAttribute(typeof(Try001.Startup))]
namespace Try001
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//ConfigureAuth(app);
}
}
}

我的 Global.asax.cs 看起来像:

public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//AreaRegistration.RegisterAllAreas();
//FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
//BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}

RegisterRoutes 只是做默认路由。所以我的目标是只做最基本的事情来让它工作,但我不知道在哪里继续挖掘。

谁能教教我?

感谢您到目前为止的阅读。

最佳答案

Cookie 初始化逻辑发生在 Application Insights JavaScript SDK 中。如果您查看页面的源代码,您会注意到来自//az416426.vo.msecnd.net/scripts/a/ai.0.js 的 JS。您还可以在 GitHub 上阅读/贡献 JavaScript SDK 的源代码:https://github.com/Microsoft/ApplicationInsights-JS

回复您的问题:

它们什么时候初始化,是做什么的?
当 JavaScript SDK 尝试发送任何遥测项目并检查 cookie 是否不存在时,它们由 JavaScript SDK 初始化,然后创建它们。详情见https://github.com/Microsoft/ApplicationInsights-JS/blob/master/JavaScript/JavaScriptSDK/Context/User.ts , session cookie也有类似的逻辑。

我怎样才能停止使用它们?
对于较新版本的 JavaScript SDK,您现在可以通过 config object 控制 cookie 以及用户信息和 session 缓冲区(用于限制对 AI 请求的速率)的本地存储。 :

...snippet...
}({
instrumentationKey: "<your key>",
isCookieUseDisabled: true,
isStorageUseDisabled: true,
enableSessionStorageBuffer: true
});

如果我想保留它们,我该如何更改它们的到期时间?您可以控制两个设置:

  • session 更新时间 - session 重置之前经过了多少时间没有事件(默认为 30 分钟)
  • session 过期时间——多少时间即使有事件(默认为 24​​ 小时),在 session 重置之前经过。

要更改它们,请在此代码段中设置检测 key 的位置旁边设置以下值:

      ..snippet..
}({
instrumentationKey: "<your key>",
sessionRenewalMs:<your custom value in ms>,
sessionExpirationMs:<your custom value in ms>

});

关于c# - 管理 Application Insights Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280710/

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