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);
                }
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        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));
        }