/// <summary>
        /// Called in the HTTP pipeline chain of execution when ASP.NET responds to a request.
        /// </summary>
        /// <param name="context">HTTP context.</param>
        public async Task Invoke(HttpContext context)
        {
            // Get root URL (e.g. "http://mydomain.com")
            string rootUrl = _webHelperService.GetRootUrl();

            // Lookup domain details for this URL
            Domain domain = _domainService.ReadByUrl(rootUrl);
            Web    web    = _webService.Read(domain.TenantId);

            // Save domain details where they can be looked up throughtout the lifecycle of the HTTP request
            _webHelperService.SetItem <Domain>("RiversideCmsDomain", domain);
            _webHelperService.SetItem <Web>("RiversideCmsWeb", web);

            // Redirect if a redirect URL specified, otherwise invoke next action
            if (domain.RedirectUrl != null)
            {
                _webHelperService.Redirect(domain.RedirectUrl);
            }
            else
            {
                await _next.Invoke(context);
            }
        }
        /// <summary>
        /// Retrieves list of navigation breadcrumbs for the specified breadcrumb collection.
        /// </summary>
        /// <param name="breadcrumbsId">Identifies the breadcrumbs collection that is returned.</param>
        /// <returns>Breadcrumb navigation.</returns>
        public List <Breadcrumb> GetBreadcrumbs(string breadcrumbsId)
        {
            // Get dictionary containing lists of breadcumbs
            string key = _controlConfigurationService.GetBreadcrumbsKey();
            Dictionary <string, List <Breadcrumb> > breadcrumbsDict = _webHelperService.GetItem <Dictionary <string, List <Breadcrumb> > >(key);

            if (breadcrumbsDict == null)
            {
                breadcrumbsDict = new Dictionary <string, List <Breadcrumb> >();
                _webHelperService.SetItem <Dictionary <string, List <Breadcrumb> > >(key, breadcrumbsDict);
            }

            // Get list of breadcrumbs for the specified id
            if (!breadcrumbsDict.ContainsKey(breadcrumbsId))
            {
                breadcrumbsDict.Add(breadcrumbsId, new List <Breadcrumb>());
            }
            return(breadcrumbsDict[breadcrumbsId]);
        }