public async Task Invoke(HttpContext httpContext) { if (httpContext == null) { throw new ArgumentNullException(nameof(httpContext)); } var existingFeature = httpContext.Features.Get <IServiceProvidersFeature>(); // All done if request services is set if (existingFeature?.RequestServices != null) { await _next.Invoke(httpContext); return; } using (var feature = new RequestServicesFeature(_scopeFactory)) { try { httpContext.Features.Set <IServiceProvidersFeature>(feature); await _next.Invoke(httpContext); } finally { httpContext.Features.Set(existingFeature); } } }
public async Task Invoke(HttpContext httpContext) { Debug.Assert(httpContext != null); // local cache for virtual disptach result var features = httpContext.Features; var existingFeature = features.Get <IServiceProvidersFeature>(); // All done if RequestServices is set if (existingFeature?.RequestServices != null) { await _next.Invoke(httpContext); return; } var replacementFeature = new RequestServicesFeature(_scopeFactory); try { features.Set <IServiceProvidersFeature>(replacementFeature); await _next.Invoke(httpContext); } finally { replacementFeature.Dispose(); // Restore previous feature state features.Set(existingFeature); } }
public async Task Invoke(HttpContext httpContext) { if (httpContext == null) { throw new ArgumentNullException(nameof(httpContext)); } var existingFeature = httpContext.Features.Get<IServiceProvidersFeature>(); // All done if request services is set if (existingFeature?.RequestServices != null) { await _next.Invoke(httpContext); return; } using (var feature = new RequestServicesFeature(_scopeFactory)) { try { httpContext.Features.Set<IServiceProvidersFeature>(feature); await _next.Invoke(httpContext); } finally { httpContext.Features.Set(existingFeature); } } }
public Task Invoke(HttpContext httpContext) { Debug.Assert(httpContext != null); // local cache for virtual disptach result var features = httpContext.Features; var servicesFeature = new RequestServicesFeature(httpContext, _scopeFactory); features.Set <IServiceProvidersFeature>(servicesFeature); return(_next.Invoke(httpContext)); }