首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理应用程序洞察库

管理应用程序洞察库
EN

Stack Overflow用户
提问于 2015-07-07 22:48:56
回答 1查看 15.5K关注 0票数 18

我想知道应用程序洞察力是如何与cookie一起工作的,因为我想了解用户和会话跟踪,所以我一直在研究和.

以下是对这一理论的简要介绍:

  1. 每当Application获得一个没有应用程序洞察力的请求,用户跟踪cookie (由application代码段设置)时,它将设置这个cookie并启动一个新会话。(来自阿普 )

2.

UserTelemetryInitializer为所有遥测项更新用户上下文的Id、AcquisitionDate属性,并从在用户浏览器中运行的Application插装代码生成的ai_user cookie中提取值。 SessionTelemetryInitializer更新所有遥测项的会话上下文的Id属性,该值是从在用户浏览器中运行的ApplicationInsights JavaScript检测代码生成的ai_session cookie中提取的。(来自azure文档(使用ApplicationInsights.config配置应用程序洞察SKD ))

所以有两个cookie:ai_sessionai_user

我的问题来了:

  1. 什么时候初始化?
  2. 是怎么回事?
  3. 我怎么才能停止使用它们呢?
  4. 如果我想保留它们,我怎么能改变它们的过期时间呢?

为了删除它们,我使用Web的默认模板(包括ASP.NET和Web )使用Web应用程序进行了一个项目。

在做一项研究时,我发现这种方法可以禁用它们,但我没有任何WebSessionTrackingTelemetryModule。因此,我注释掉了"UserTelemetryInitializer“和"SessionTelemetryInitializer”,这就是我所拥有的:

代码语言:javascript
复制
<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>

以及:

代码语言:javascript
复制
<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看起来如下:

代码语言:javascript
复制
[assembly: OwinStartupAttribute(typeof(Try001.Startup))]
namespace Try001
{
    public partial class Startup
    {
         public void Configuration(IAppBuilder app)
         {   
            //ConfigureAuth(app);
         }
    }
  }

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

代码语言:javascript
复制
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只是在做默认的路由。所以我打算做一些最基本的工作,但我不知道该在哪里继续挖掘。

有人能指点我吗?

到目前为止谢谢你的阅读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的请求)。

代码语言:javascript
复制
...snippet...
}({
    instrumentationKey: "<your key>",
    isCookieUseDisabled: true,
    isStorageUseDisabled: true,
    enableSessionStorageBuffer: true
});

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

  • 会话更新时间-在没有活动的情况下重置会话之前的时间(默认为30分钟)
  • 会话过期时间--即使是活动(默认为24小时),会话重置前所需的时间也是多少。

若要更改它们,请在此代码段中设置以下值,该代码段位于设置仪表键的位置:

代码语言:javascript
复制
      ..snippet..
 }({
        instrumentationKey: "<your key>",
        sessionRenewalMs:<your custom value in ms>,
        sessionExpirationMs:<your custom value in ms>

    });
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31280710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档