2017-09-12 38 views
0

我目前使用在WPF應用程序的應用見解。我手工處理幾乎所有的東西,所以在啓動時創建一個遙測客戶端和像數據庫版本,可用RAM,顯示器的數量等設置多個上下文屬性這是我們用它來細分和過濾我們的遙測數據信息。在Application Insights中,如何避免在每個請求中發送會話自定義數據?

我的問題是,所有這些信息的發送時間間隔時間每次調用遙測客戶端(trackPageview的,TrackEvent等)。有沒有辦法在每個會話中只發送一次信息,但仍然可以在門戶網站中過濾和分段信息?

這裏是我的代碼的摘錄:

private static TelemetryClient _telemetry; 

public static void Initialize(DeviceInfo deviceInfo, ApplicationInfo appInfo) { 

    _telemetry = new TelemetryClient(TelemetryConfiguration.Active); 
    _telemetry.Context.Device.OperatingSystem = deviceInfo.OsVersion; 
    _telemetry.Context.Device.Id = deviceInfo.ProcessorId; 
    _telemetry.Context.Component.Version = appInfo.Version; 
    _telemetry.Context.Session.Id = Guid.NewGuid().ToString(); 
    _telemetry.Context.User.Id = appInfo.UserId; 

    _telemetry.Context.Properties["Cpu"] = deviceInfo.Cpu; 
    _telemetry.Context.Properties["NumberOfMonitors"] = deviceInfo.NumberOfMonitors; 
    _telemetry.Context.Properties["TotalAvailableMemory"] = deviceInfo.TotalAvailableMemory; 

} 

public static void TrackPageView(string pageName) { 
    _telemetry.TrackPageView(pageName); 
} 

回答

0

沒有,沒有「建」的方式與每個會話發送一些數據只有一次。

如果有,則必須有sessions表,並且您必須在每個查詢中加入該sessionscustomEvents/pageViews以獲取該信息。然後有一些技巧,必須做還是讓你更新的東西作爲會話一起去(如果有人在顯示器插頭,而應用程序是開放的,會發生什麼?)

作爲替代,您可以創建這一個單一的事件只發送一次,自己擁有的信息。

但是,如果你這樣做,你必須再次開始加入到特定的事件,你會失去很容易地問這樣的「多久的人做X與2臺顯示器」的問題,有能力你現在可以輕而易舉地做。

+0

這就是我懷疑,但我不知道如果我失去了一些東西明顯。無論如何,很高興知道。 – Mike

相關問題