gpt4 book ai didi

c# - 绕过 DotNet 核心服务堆栈上的 SSL 证书验证

转载 作者:IT王子 更新时间:2023-10-29 00:57:24 25 4
gpt4 key购买 nike

我知道 ServicePointManager.ServerCertificateValidationCallback 不再存在于 .Net Core 中,取而代之的是:

using(var handler = new System.Net.Http.HttpClientHandler())
{
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
handler.ServerCertificateCustomValidationCallback = (request, cert, chain, errors) =>
{
return true;
};

}
}

但是,我们目前正在使用 ServiceStack.Core 库,据我所知,它既不公开此类属性也不公开处理程序本身。

我如何告诉 ServiceStack 客户端绕过此代码中的 ssl 验证?

using(var client = new JsonServiceClient("https://www.google.com"))
{
var response = client.Get("/results");
}

如果有办法,这在 Windows 和 Linux 上是否同样有效?

最佳答案

JsonServiceClient 基于 .NET HttpWebRequest 构建,后者已在 .NET Core 中重写为 wrapper over HttpClient所以我们通常建议 .NET Core 避免这种开销(这比 .NET 4.5 慢得多)并切换到使用 JsonHttpClient in ServiceStack.HttpClient相反,因为它直接使用 HttpClient 并且您可以在其中注入(inject)自己的 HttpClientHandler :

var client = new JsonHttpClient(baseUrl)
{
HttpMessageHandler = new HttpClientHandler
{
UseCookies = true,
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
ServerCertificateCustomValidationCallback = (req,cert,chain,errors) => true
}
};

注意推荐到reuse HttpClient instances因此您应该尽可能重用 HttpClient 实例并避免处置它们。

关于c# - 绕过 DotNet 核心服务堆栈上的 SSL 证书验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44399231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com