我知道ServicePointManager.ServerCertificateValidationCallback
不再存在于.Net Core中,而是replace为:
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客户端绕过此代码中的SSLvalidation?
using(var client = new JsonServiceClient("https://www.google.com")) { var response = client.Get("/results"); }
如果有办法,在Windows和Linux上都可以工作吗?
JsonServiceClient
是建立在.NET HttpWebRequest
,它已经在.NET Core中被重写为HttpClient的封装,所以我们一般建议.NET Core避免这种开销(比.NET 4.5慢),并切换到使用JsonHttpClient ServiceStack.HttpClient,因为它直接使用HttpClient
,你可以在其中注入你自己的HttpClientHandler
:
var client = new JsonHttpClient(baseUrl) { HttpMessageHandler = new HttpClientHandler { UseCookies = true, AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate, serverCertificateCustomValidationCallback = (req,cert,chain,errors) => true } };
请注意,建议重用HttpClient实例,以便尽可能重用HttpClient实例,并避免处理它们。