我想知道应用程序洞察力是如何与cookie一起工作的,因为我想了解用户和会话跟踪,所以我一直在研究和.
以下是对这一理论的简要介绍:
2.
UserTelemetryInitializer为所有遥测项更新用户上下文的Id、和AcquisitionDate属性,并从在用户浏览器中运行的Application插装代码生成的ai_user cookie中提取值。 SessionTelemetryInitializer更新所有遥测项的会话上下文的Id属性,该值是从在用户浏览器中运行的ApplicationInsights JavaScript检测代码生成的ai_session cookie中提取的。(来自azure文档(使用ApplicationInsights.config配置应用程序洞察SKD ))
所以有两个cookie:ai_session和ai_user。
我的问题来了:
为了删除它们,我使用Web的默认模板(包括ASP.NET和Web )使用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>但这没什么区别。不管我是否对模块进行了注释,cookies仍在生成中。
为了删除cookies,我评论了在启动过程中完成的步骤,并将所有的.js文件排除在我的项目之外,但是每次请求之后,cookies就会继续出现。
因此,在这一点上,我不明白"Application“是在哪里发生的,我猜我缺少的是后端的东西。我说错了吗?
最后,我的注释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只是在做默认的路由。所以我打算做一些最基本的工作,但我不知道该在哪里继续挖掘。
有人能指点我吗?
到目前为止谢谢你的阅读。
发布于 2015-07-08 13:37:18
Cookie初始化逻辑发生在Application SDK中。如果您查看页面的源代码,您将注意到JS来自//az416426.vo.msecnd.net/script/a/ai.0.js。您还可以在JavaScript:https://github.com/Microsoft/ApplicationInsights-JS上阅读/贡献GitHub SDK的源代码。
回答你的问题:
什么时候初始化,以及在做什么?
当JavaScript SDK尝试发送任何遥测项并检查cookie是否不存在时,它们将被初始化,然后创建它们。有关详细信息,请参阅https://github.com/Microsoft/ApplicationInsights-JS/blob/master/JavaScript/JavaScriptSDK/Context/User.ts,会话cookie也有类似的逻辑。
我怎么才能停止使用它们?
在最新版本的JavaScript SDK中,您现在可以通过配置对象控制cookies以及用户信息和会话缓冲区的本地存储(用于限制对AI的请求)。
...snippet...
}({
instrumentationKey: "<your key>",
isCookieUseDisabled: true,
isStorageUseDisabled: true,
enableSessionStorageBuffer: true
});如果我想保存它们,我如何更改它们的过期时间?有两个设置您可以控制:
若要更改它们,请在此代码段中设置以下值,该代码段位于设置仪表键的位置:
..snippet..
}({
instrumentationKey: "<your key>",
sessionRenewalMs:<your custom value in ms>,
sessionExpirationMs:<your custom value in ms>
});https://stackoverflow.com/questions/31280710
复制相似问题