Я создал обратный прокси-сервер, используя 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?