在新的 WebApi 项目中使用 HttpClient

本文关键字:HttpClient 项目 WebApi | 更新日期: 2023-09-27 17:56:13

我创建了一个新的Webapi2项目,我正在尝试使用以下代码调用外部Web服务:

WebServiceAuthResult authResult = new WebServiceAuthResult();
using (var httpClient = new HttpClient())
{
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
    try
    {
        var response = await httpClient.PostAsync(url, null);
        var responseContent = await response.Content.ReadAsStringAsync();
        authResult = JsonConvert.DeserializeObject<WebServiceAuthResult>(responseContent);
    }
    catch (Exception ex)
    {
    }
}

我收到此错误:

无法从传输连接读取数据:远程主机强行关闭了现有连接。

我在 UWP 项目中使用了完全相同的代码,并且它运行良好 - 所以我猜我的项目设置有问题。

我已经查看了Google和其他有关此的StackOverflow问题,但它们都表明Web服务存在问题 - 但我知道这是有效的,因为我可以使用我的UWP项目进行测试。

任何人都可以建议我尝试什么吗?

在新的 WebApi 项目中使用 HttpClient

与这些问题通常的情况一样,答案是一行,但花了 4 个小时才能解决!

通过添加以下代码行,与 Web 服务的连接成功:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

我已经在 using 语句中添加了代码,但我认为它只需要一次,所以如果有人可以告诉我添加此代码的最佳位置在哪里以及为什么我需要它在我的 WebApi 项目中而不是我的UWP项目中?