public void SetProviderContext(ProviderContext providerContext)
        {
            if (providerContext == null)
            {
                throw new ArgumentNullException(nameof(providerContext));
            }

            var httpContext = _httpContextAccessor.HttpContext;

            var currentContextFeature = httpContext.Features.Get <ProviderContextFeature>();

            if (currentContextFeature != null && currentContextFeature.ProviderContext.Strict)
            {
                if (currentContextFeature.ProviderContext.ProviderInfo.ProviderId != providerContext.ProviderInfo.ProviderId)
                {
                    throw new InvalidOperationException(
                              $"Provider context has already been set for another provider: '{currentContextFeature.ProviderContext.ProviderInfo.ProviderId}'.");
                }
                else if (currentContextFeature.ProviderContext.Strict && !providerContext.Strict)
                {
                    // Don't allow going from strict -> non-strict
                    return;
                }
            }

            httpContext.Features.Set(new ProviderContextFeature(providerContext));
        }
        public void SetProviderContext(ProviderContext providerContext)
        {
            if (providerContext == null)
            {
                throw new ArgumentNullException(nameof(providerContext));
            }

            var httpContext = _httpContextAccessor.HttpContext;

            var currentContextFeature = httpContext.Features.Get <ProviderContextFeature>();

            if (currentContextFeature != null && !currentContextFeature.ProviderContext.IsFallback)
            {
                if (currentContextFeature.ProviderContext.ProviderInfo.ProviderId != providerContext.ProviderInfo.ProviderId)
                {
                    throw new InvalidOperationException(
                              $"Provider context has already been set for another provider: '{currentContextFeature.ProviderContext.ProviderInfo.ProviderId}'.");
                }
                else if (!currentContextFeature.ProviderContext.IsFallback && providerContext.IsFallback)
                {
                    return;
                }
            }

            httpContext.Features.Set(new ProviderContextFeature(providerContext));
        }
Esempio n. 3
0
        public static RedirectToActionResult WithProviderContext(
            this RedirectToActionResult result,
            ProviderContext providerContext)
        {
            var routeValues = (IDictionary <string, object>)result.RouteValues ?? new Dictionary <string, object>();

            routeValues[ProviderContextMiddleware.RouteValueKey] = providerContext.ProviderInfo.ProviderId;

            result.RouteValues = new RouteValueDictionary(routeValues);

            return(result);
        }
Esempio n. 4
0
 public static Url WithProviderContext(this Url url, ProviderContext providerContext) =>
 url.SetQueryParam(ProviderContextMiddleware.RouteValueKey, providerContext.ProviderInfo.ProviderId);