public async Task <MembershipContext> GetMembershipContext()
        {
            if (_httpContext.Items.Contains(Key))
            {
                return(_httpContext.Items[Key] as MembershipContext);
            }

            _logger.Debug("Membership not found in http context.  Generating new membership context.");
            if (!_authenticationService.IsUserAuthenticated())
            {
                _logger.Info("Unable to find memebership due to user is not authenticated");
                return(null);
            }

            _logger.Debug("Getting membership external id claim.");
            string userExternalId;

            if (!_authenticationService.TryGetClaimValue(Constants.UserExternalIdClaimKeyName, out userExternalId))
            {
                _logger.Info("Unable to find memebership due to external id not found");
                return(null);
            }

            _logger.Debug("Now getting the hashed account id from the route.");
            object accountHashedId;

            if (!_httpContext.Request.RequestContext.RouteData.Values.TryGetValue(Constants.AccountHashedIdRouteKeyName, out accountHashedId))
            {
                _logger.Info($"Unable to find memebership due to {nameof(Constants.AccountHashedIdRouteKeyName)} not found in RouteData");
                return(null);
            }

            _logger.Debug($"Got the hashed account id: {accountHashedId}, now getting the memberships for the account.");
            var memberships = (await _membershipProvider.GetMemberships(accountHashedId.ToString()).ConfigureAwait(false)).ToList();

            _logger.Debug("Got the account memberships");
            var membership = memberships.FirstOrDefault(m => m.UserRef.Equals(userExternalId, StringComparison.OrdinalIgnoreCase));

            if (membership == null)
            {
                _logger.Info($"Unable to find membership due to {userExternalId} is missing from memberships, Total {memberships.Count} memberships found");
                return(null);
            }

            _logger.Info($"User {userExternalId} is a member of {membership.HashedAccountId}.");
            _httpContext.Items[Key] = membership;
            return(membership);
        }