у меня Asp.Net Core WebApi
. Я делаю Http-запросы в соответствии с HttpClientFactory шаблон . Вот мой пример кода:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddHttpClient<IMyInterface, MyService>();
...
}
public class MyService: IMyInterface
{
private readonly HttpClient _client;
public MyService(HttpClient client)
{
_client = client;
}
public async Task CallHttpEndpoint()
{
var request = new HttpRequestMessage(HttpMethod.Get, "www.customUrl.com");
var response = await _client.SendAsync(request);
...
}
}
Я хочу реализовать отправку запросов через динамический прокси. Это в основном означает, что мне может потребоваться изменить прокси-сервер с каждым запросом. На данный момент я нахожу 2 приложения, ни одно из которых не кажется мне хорошим:
1.Имеет статический прокси, как этот:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddHttpClient<IMyInterface, MyService>().ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler
{
Proxy = new WebProxy("http://127.0.0.1:8888"),
UseProxy = true
};
});
...
}
Но в этом подходе я могу использовать только один прокси для каждой службы.
2.Dispose HttpClient
с каждым запросом:
HttpClientHandler handler = new HttpClientHandler()
{
Proxy = new WebProxy("http://127.0.0.1:8888"),
UseProxy = true,
};
using(var client = new HttpClient(handler))
{
var request = new HttpRequestMessage(HttpMethod.Get, "www.customUrl.com");
var response = await client.SendAsync(request);
...
}
Но таким образом я нарушаю шаблон HttpClientFactory, и это может вызвать проблемы с производительностью приложения, как указано в следующей статье
Есть ли третий способ, которым я мог бы динамически менять прокси, не создавая заново HttpClient
?