无法使用 HttpClient 调用微服务

Unable to call microservice using HttpClient

提问人:Ask 提问时间:10/24/2023 最后编辑:marc_sAsk 更新时间:10/25/2023 访问量:36

问:

我正在使用 OpenApi (NSwag) 创建用于调用微服务的客户端。现在,当我从 Visual Studio 运行我的应用程序时,它工作正常,我可以使用 调用我的服务,但我将我的项目托管为 Windows 服务,当 Windows 服务尝试调用微服务时,它会引发以下错误:HttpClientHttpClient

无法建立 SSL 连接,请参阅内部异常。

System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。

我在本地运行我的微服务并使用 localhost url

.NET ASP.net-core Windows 服务 OpenAPI dotnet-httpclient

评论

1赞 DavidG 10/24/2023
您的服务似乎具有无效的SSL证书。
0赞 Ask 10/24/2023
我该如何解决?

答:

0赞 Qiang Fu 10/25/2023 #1

“证书无效”的常见原因是证书的域与您调用的域不同。但不管是什么原因,一个简单的解决方法是在创建 httpclient 时绕过证书验证。

var httpClientHandler = new HttpClientHandler();
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, sslPolicyErrors) =>{return true;};
builder.Services.AddScoped(sp => new HttpClient(httpClientHandler));

或者,如果需要,可以添加一些验证

httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, sslPolicyErrors) => {
    if (cert.GetCertHashString() == "A7E2BA992F4F2BE220559B8A5371F05A00A6E750") //FingerPrint of the certificate
    {
        return true;
    }
    return false;
};