gpt4 book ai didi

c# - 忽略错误证书 - .NET CORE

转载 作者:可可西里 更新时间:2023-11-01 07:45:34 24 4
gpt4 key购买 nike

我正在编写一个 .NET Core 应用程序来轮询远程服务器并传输出现的数据。这在 PHP 中工作得很好,因为 PHP 忽略了证书(这在浏览器中也是一个问题),但我们想将其移至 C# .NET CORE,因为这是系统中唯一剩余的 PHP。

我们知道服务器是好的,但由于各种原因不能/不会很快更新证书。

请求正在使用 HttpClient:

        HttpClient httpClient = new HttpClient();
try
{
string url = "https://URLGoesHere.php";
MyData md = new MyData(); // this is some data we need to pass as a json
string postBody = JsonConvert.SerializeObject(md);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage wcfResponse = await httpClient.PostAsync(url, new StringContent(postBody, Encoding.UTF8, "application/json"));
Console.WriteLine(wcfResponse.Content);
}
catch (HttpRequestException hre)
{
// This exception is being triggered
}

对此进行研究后,似乎普遍建议使用 ServicePointManager,但这在 .NET Core 中不可用,而且我无法找到推荐的替代品。

在 .NET Core 中是否有一种简单或更好的方法来执行此操作?

最佳答案

你想要的不是 new HttpClient()

var handler = new System.Net.Http.HttpClientHandler();
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
handler.ServerCertificateCustomValidationCallback = (request, cert, chain, errors) =>
{
// Log it, then use the same answer it would have had if we didn't make a callback.
Console.WriteLine(cert);
return errors == SslPolicyErrors.None;
};

...
}

这应该适用于 Windows,以及 libcurl 被编译为使用 openssl 的 Linux。对于其他 curl 后端,Linux 将抛出异常。

关于c# - 忽略错误证书 - .NET CORE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42712844/

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