Исключение при попытке использовать существующий экземпляр HttpClient в C # - PullRequest
0 голосов
/ 25 сентября 2019

Обновление - Следующая проблема была решена путем установки прокси для HttpClientHandler.Но мне все еще интересно, как первый запрос был успешным без установки прокси-сервера?Почему только последующие запросы (после первого запроса) не будут выполняться из-за прокси-сервера?

У меня есть простой класс для повторного использования одного экземпляра HttpClient в разных запросах.Проблема, с которой я сталкиваюсь, состоит в том, что только первый вызов завершается успешно, в то время как все последующие вызовы завершаются с ошибкой SocketException.

public class MyHttpClient
 {
    private static readonly HttpClient client;
    static MyHttpClient()
    {
        client = new HttpClient();
        client.BaseAddress = new Uri("http://x.com");
    }
    public async Task<string> GetSecurityToken(LoginData data)
    {
        var reqMsg = JsonConvert.SerializeObject(data);
        var reqContent = new StringContent(reqMsg, System.Text.Encoding.UTF8, "application/json");
        var response= await client.PostAsync("/api/v1/security/token", reqContent)
        var result = await response.Content.ReadAsStringAsync();
        return result
    }
 }


// The above class is consumed as

        var client = new MyHttpClient();
        var login = new LoginData("abc@gmail.com", "xxxx");
        var result = await client.GetSecurityToken(login); // this call succeeds !
        var result1 = await client.GetSecurityToken(login); // this call fails with an exception, but why?

Исключение, которое я получаю во втором вызове, - SocketException: попытка подключения не удаласьпотому что подключенная сторона не ответила должным образом через некоторое время или не удалось установить соединение, потому что подключенный хост не смог ответить

...