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(_services))
            {
                try
                {
                    httpContext.Features.Set<IServiceProvidersFeature>(feature);
                    await _next.Invoke(httpContext);
                }
                finally
                {
                    httpContext.Features.Set(existingFeature);
                }
            }
        }
Example #2
0
        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(_services))
            {
                try
                {
                    httpContext.Features.Set <IServiceProvidersFeature>(feature);
                    await _next.Invoke(httpContext);
                }
                finally
                {
                    httpContext.Features.Set(existingFeature);
                }
            }
        }