在新的WebApi项目中使用HttpClient

时间:2016-07-11 09:57:41

标签: c# web-services asp.net-web-api

我创建了一个新的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项目进行测试。

有人可以为我提出任何建议吗?

1 个答案:

答案 0 :(得分:2)

正如通常情况下这些问题的答案是单线,但需要4个小时才能解决!

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

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

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