Сессия в DelegatingHandler - PullRequest
       25

Сессия в DelegatingHandler

0 голосов
/ 31 января 2019

Я создал обратный прокси-сервер, используя DelegatingHandler в качестве базового класса.Он будет использоваться для отправки запросов из нашего веб-приложения MVC в службу REST поставщика, которая работает в нашем локальном домене.

Чтобы убедиться, что не выполняется вмешательство в запросы, нам нужно проверить некоторые переменныеи сравните их со значениями, хранящимися в сеансе.

Однако, похоже, HttpRequestMessage request и HttpContextBase, связанные с ним, не имеют доступной переменной сеанса.

RouteTable.Routes.MapHttpRoute(
    name: "ProxyRoute",
    routeTemplate: "/api/proxy/{*path}",  
    handler: HttpClientFactory.CreatePipeline(
        innerHandler: new HttpClientHandler(),
        handlers: new DelegatingHandler[] { new ProxyHandler() }),
    defaults: null,
    constraints: null
);

public class CheckoutProxyHandler : DelegatingHandler
{
    private static HttpClient client = new HttpClient();

    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request,
        CancellationToken cancellationToken)
    {
        //Modify some headers here, change Uri...

        var session = ???

        var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
        return response;
    }
}

Есть лиВ любом случае, я могу заставить Asp.Net PipeLine предоставить сессионное состояние (только для чтения) внутри DelegatingHandler?

...