代码之家  ›  专栏  ›  技术社区  ›  noobie

通过xunit集成测试向HttpClient发出请求时出错

  •  0
  • noobie  · 技术社区  · 4 年前

    我有一个包含在标准.net类库中的自定义类,它使用HttpClient向外部面向公共的api发出请求。

    当我实例化该类并通过标准的.net控制台应用程序调用该方法时,会返回预期的结果。

    但是,通过Xuit测试执行相同的代码会产生以下异常:

    '基础连接已关闭:发送时发生意外错误。'

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

    测试项目和类库项目框架都是。净标准4.8。

    大多数在线示例都使用WebApplicationFactory here 。 在我的情况下,我没有使用ASP核心,我不能使用这个类。

    我在xunit方面没有那么丰富的经验,错误消息中也没有太多关于为什么会发生这种情况的细节。

    为了隔离这个问题,我尝试直接在测试方法中运行这段代码,但也出现了同样的错误。

    如有任何建议/解决办法,不胜感激。

    using (HttpClient httpClient = new HttpClient())
    {
        var request = new HttpRequestMessage()
            {
                Method = HttpMethod.Get,
                RequestUri = endpoint
            };
         
            request.Headers.Add("api-key", key);
            using (HttpResponseMessage response = httpClient.SendAsync(request).Result)
            {
                var rawResponse = response.Content.ReadAsStringAsync().Result;
                    var response = JsonConvert.DeserializeObject<CustomResponse>(rawResponse);
            }
    }
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   noobie    4 年前

    多亏了这个,我解决了这个问题 post

    在发出请求之前添加TLS 1.1和1.2有效

    ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
    
    推荐文章