public async Task Invoke(HttpContext context) { if (context.Request.Path.StartsWithSegments(_pathPrefix) || _pathPrefixIsRoot) { var didProxyRequest = await ConditionalProxy.PerformProxyRequest( context, _httpClient, _targetTask, _applicationStoppingToken); if (didProxyRequest) { return; } } // Not a request we can proxy await _next.Invoke(context); }
public ConditionalProxyMiddleware( RequestDelegate next, string pathPrefix, TimeSpan requestTimeout, Task <ConditionalProxyMiddlewareTarget> targetTask, IApplicationLifetime applicationLifetime) { if (!pathPrefix.StartsWith("/")) { pathPrefix = "/" + pathPrefix; } _next = next; _pathPrefix = pathPrefix; _pathPrefixIsRoot = string.Equals(_pathPrefix, "/", StringComparison.Ordinal); _targetTask = targetTask; _httpClient = ConditionalProxy.CreateHttpClientForProxy(requestTimeout); _applicationStoppingToken = applicationLifetime.ApplicationStopping; }