public static async Task<TrackingResult> TrackPageViewAsync(this SimpleTracker tracker, string pageTitle, string pageUrl)
        {
            var pageViewParameters = new PageView
            {
                DocumentTitle = pageTitle,
                DocumentLocationUrl = pageUrl,
                CacheBuster = tracker.AnalyticsSession.GenerateCacheBuster()
            };

            return await tracker.TrackAsync(pageViewParameters);
        }
        public static async Task<TrackingResult> TrackPageViewAsync(this Tracker tracker, HttpRequestMessage httpRequest, string pageTitle, string pageUrl = null)
        {            
            var pageViewParameters = new PageView
            {
                DocumentTitle = pageTitle,
                DocumentLocationUrl = pageUrl,
                UserAgent = httpRequest.Headers.UserAgent.ToString(),
                DocumentHostName = httpRequest.RequestUri.Host,
                UserLanguage = httpRequest.Headers.AcceptLanguage.ToString().ToLower(),
                ReferralUrl = httpRequest.Headers.Referrer != null ? httpRequest.Headers.Referrer.ToString() : null,                
                CacheBuster = tracker.AnalyticsSession.GenerateCacheBuster()
            };

            return await tracker.TrackPageViewAsync(pageViewParameters);
        }
        public static async Task<TrackingResult> TrackPageViewAsync(this Tracker tracker, HttpContextBase httpContext, string pageTitle, string pageUrl = null)
        {
            var pageViewParameters = new PageView
            {
                DocumentTitle = pageTitle,
                DocumentLocationUrl = pageUrl,
                UserAgent = httpContext.Request.UserAgent,
                DocumentHostName = httpContext.Request.UserHostName,
                UserLanguage = httpContext.Request.UserLanguages != null ? string.Join(";",  httpContext.Request.UserLanguages).ToLower() : null,
                ReferralUrl = httpContext.Request.UrlReferrer != null ? httpContext.Request.UrlReferrer.ToString() : null,
                CacheBuster = tracker.AnalyticsSession.GenerateCacheBuster()
            };

            return await tracker.TrackAsync(pageViewParameters);
        }
        public async Task TrackPageViewAsync()
        {
            var pageviewTrackingParameters = new PageView
            {
                DocumentTitle = _context.Request.Path.ToString(),
                DocumentLocationUrl = GetRelativeUrl(),
                DocumentHostName = _context.Request.Uri.Host,
                UserAgent = _context.Request.Headers["User-Agent"],
                UserLanguage = _context.Request.Headers["Accept-Language"],
                DocumentReferrer = _context.Request.Headers["Referrer"],
                IpOverride = _context.Request.Environment["server.RemoteIpAddress"] != null ? _context.Request.Environment["server.RemoteIpAddress"].ToString() : null,
                UserId = _context.Authentication.User.Identity.Name
            };

            await TrackAsync(pageviewTrackingParameters);
        }
 public static void TrackLastPageViewAsync()
 {
     if (!IsEnabled)
     {
         return;
     }
     var pageView = new PageView();
     FillParameters(pageView);
     Instance.TrackPageViewAsync(pageView);
 }