我想知道应用程序洞察力如何与 cookie 一起使用,因为我想了解用户和会话跟踪,所以我一直在研究和...
下面简单介绍一下这个理论:
每当 Application Insights SDK 收到没有应用程序洞察用户跟踪 cookie(由 Application Insights JS 片段设置)的请求时,它都会设置此 cookie 并启动新会话。(来自apmtips)
2.
UserTelemetryInitializer使用从用户浏览器中运行的 Application Insights JavaScript 检测代码生成的ai_user cookie中提取的值更新所有遥测项目的用户上下文的Id和AcquisitionDate属性。
SessionTelemetryInitializer使用从用户浏览器中运行的 ApplicationInsights JavaScript 检测代码生成的ai_session cookie中提取的值更新所有遥测项的Session上下文的Id属性。(来自azure 文档(使用 ApplicationInsights.config 配置 Application Insights SKD))
所以有两个 cookie:ai_session和ai_user。
我的问题来了:
- 他们什么时候初始化?
- 它在做什么?
- 我怎样才能停止使用它们?
- 如果我想保留它们,我该如何更改它们的到期时间?
尝试删除它们时,我使用 Web Api 的默认模板(包括 MVC 和 Web Api)使用 ASP.NET Web 应用程序创建了一个项目。
进行研究时,我发现这种方法可以禁用它们,但我没有任何 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,我评论了 Startup 中完成的步骤,并从我的项目中排除了所有 .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 只是在做默认路由。所以我的目标是只做非常基本的事情来让它工作,但我不知道在哪里继续挖掘。
有人可以启发我吗?
感谢您到目前为止的阅读。