У меня есть требование получать данные от конечной точки API из моего контроллера WebAPI.Я использую HttpClient
для достижения цели.Однако кажется, что клиент не может получить данные с конечной точки.Вызов connect
завершается неудачно со следующей ошибкой:
HTTPS handshake to test.site failed. System.IO.IOException Unable to read
data from the transport connection: An existing connection was forcibly
closed by the remote host. <An existing connection was forcibly closed by
the remote host>
Конечная точка API правильно размещена с действительным сертификатом SSL.Более того, если я использую консольное приложение / использую почтальон для попадания в API, ошибки не возникает, и я вижу ответ.Тем не менее, когда я пытаюсь использовать тот же самый API изнутри моего контроллера API, я вижу ошибку соединения SSL.
Вот код для клиента:
HttpClient client = new HttpClient()
{
BaseAddress = new Uri(uri)
};
var requestMessage = new HttpRequestMessage(
new HttpMethod("GET"),
requestUrl);
ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, sslPolicyErrors) => true;
client.DefaultRequestHeaders.Add(
"User-Agent",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var responseMessage = await client.SendAsync(requestMessage);
Почему поведение для запроса connect
от WebAPI отличается от поведения консольного приложения?Можете ли вы помочь мне решить вышеуказанную проблему?