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)); }
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); }
public static Url WithProviderContext(this Url url, ProviderContext providerContext) => url.SetQueryParam(ProviderContextMiddleware.RouteValueKey, providerContext.ProviderInfo.ProviderId);