ユーザーとセッションの追跡を理解したいので、アプリケーションの洞察が Cookie でどのように機能するのか疑問に思っているので、調査してきました...
ここでは、理論について簡単に紹介します。
Application Insights SDK は、Application Insights ユーザー追跡 Cookie (Application Insights JS スニペットによって設定) を持たない要求を受け取るたびに、この Cookie を設定し、新しいセッションを開始します。( apmtipsから)
2.
UserTelemetryInitializerは、すべてのテレメトリ項目のユーザーコンテキストのIdプロパティとAcquisitionDateプロパティを、ユーザーのブラウザーで実行されている Application Insights JavaScript インストルメンテーション コードによって生成されたai_user Cookie から抽出された値で更新します。
SessionTelemetryInitializerは、すべてのテレメトリ項目のセッションコンテキストのIdプロパティを、ユーザーのブラウザーで実行されている ApplicationInsights JavaScript インストルメンテーション コードによって生成されたai_session Cookie から抽出された値で更新します。( Azure ドキュメント (ApplicationInsights.config を使用した Application Insights SKD の構成)から)
したがって、 ai_sessionとai_userの2 つの Cookie があります。
そして、ここに私の質問があります:
- それらはいつ初期化されますか?
- それは何をしているのですか?
- それらの使用をやめるにはどうすればよいですか?
- それらを保持したい場合、どうすれば有効期限を変更できますか?
それらを削除しようとして、MVC と Web Api を含む 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 を削除しようとして、スタートアップで行った手順にコメントし、プロジェクトからすべての .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 はデフォルトのルーティングを行っているだけです。そのため、機能させるために非常に基本的なことだけを行うことを目指しましたが、どこを掘り下げるべきかについての手がかりがありません。
誰かが私を啓発できますか?
ここまで読んでくれてありがとう。