title: In Application Insights, how can I avoid sending session custom data with every request?
body: <p>I'm currently using Application Insights in a WPF application. I handle almost everything manually, so on startup I create a telemetry client and set multiple Context properties like Database Version, Available RAM, Number of Monitors, etc. This is information that we use to segment and filter our telemetry data.</p>
  
  <p>The problem I have is that all this information is sent every time with each call to the telemetry client (TrackPageView, TrackEvent, etc). Is there any way to send the information only once per session but still have it available to filter and segment in the portal?</p>
  
  <p>Here's an extract of my code:</p>
  
  <pre><code>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);
  }
  </code></pre>