尝试下载 osu! 时如何修复 "The SSL connection could not be established, see inner exception."化身
How to fix "The SSL connection could not be established, see inner exception." when trying to download osu! avatar
我要下载osu!头像使用它们,但不断收到此错误:
The SSL connection could not be established.
内部异常是:
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> System.ComponentModel.Win32Exception: Получено непредвиденное сообщение или оно имеет неправильный формат
示例url:
https://a.ppy.sh/10638551?1524507784.png
我尝试使用 HttpClient 和 WebClient 但没有成功。
using(HttpClient client = new HttpClient())
{
var resp = await client.GetAsync("https://a.ppy.sh/10638551?1547998515.jpeg");
var responseStr = await resp.Content.ReadAsStringAsync();
File.WriteAllText("html/avatars/avatar.jpeg", responseStr);
}
答案:
一段时间后,我发现我使用的库有点糟糕。之后我发现 Selenium.
考虑到这一点,我开始使用 Selenium WebDriver 并认为我可以截取我需要的页面的屏幕截图,然后我裁剪该图像并得到我需要的东西。
所以这个问题就不用继续了。
我找到了这个博客帮助我的解决方案
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) =>
{
// local dev, just approve all certs
if (development) return true;
return errors == SslPolicyErrors.None ;
};
https://www.khalidabuhakmeh.com/validate-ssl-certificate-with-servicepointmanager
在使用 HttpClient 之前,您应该设置 HttpClientHandler;
var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback +=
(sender, certificate, chain, errors) =>
{
return true;
};
仅比您的 HttpClient 代码。
必须适用于 .net Core 3。*
我相信我们可能已经解决了这个确切的问题(或一个非常相似的问题)
在我们的例子中,我们得到了同样的异常,但奇怪的是只来自一台机器。
经过一些调查,我们使用该软件 (https://www.nartac.com/Products/IISCrypto/Download) 确定 我们的盒子和我们试图联系的盒子之间没有共享密码套件 .
我们使用该软件在我们的盒子上启用受支持的套件并重新启动。
备份后 运行,一切正常。
最终这是一个机器配置问题,而不是编码问题。
[注意:我与这个软件或其公司没有任何关系,我确信可以使用其他方法来实现这一点,但我知道这对我们有用]
我要下载osu!头像使用它们,但不断收到此错误:
The SSL connection could not be established.
内部异常是:
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> System.ComponentModel.Win32Exception: Получено непредвиденное сообщение или оно имеет неправильный формат
示例url: https://a.ppy.sh/10638551?1524507784.png
我尝试使用 HttpClient 和 WebClient 但没有成功。
using(HttpClient client = new HttpClient())
{
var resp = await client.GetAsync("https://a.ppy.sh/10638551?1547998515.jpeg");
var responseStr = await resp.Content.ReadAsStringAsync();
File.WriteAllText("html/avatars/avatar.jpeg", responseStr);
}
答案:
一段时间后,我发现我使用的库有点糟糕。之后我发现 Selenium.
考虑到这一点,我开始使用 Selenium WebDriver 并认为我可以截取我需要的页面的屏幕截图,然后我裁剪该图像并得到我需要的东西。
所以这个问题就不用继续了。
我找到了这个博客帮助我的解决方案
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) =>
{
// local dev, just approve all certs
if (development) return true;
return errors == SslPolicyErrors.None ;
};
https://www.khalidabuhakmeh.com/validate-ssl-certificate-with-servicepointmanager
在使用 HttpClient 之前,您应该设置 HttpClientHandler;
var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback +=
(sender, certificate, chain, errors) =>
{
return true;
};
仅比您的 HttpClient 代码。 必须适用于 .net Core 3。*
我相信我们可能已经解决了这个确切的问题(或一个非常相似的问题)
在我们的例子中,我们得到了同样的异常,但奇怪的是只来自一台机器。
经过一些调查,我们使用该软件 (https://www.nartac.com/Products/IISCrypto/Download) 确定 我们的盒子和我们试图联系的盒子之间没有共享密码套件 .
我们使用该软件在我们的盒子上启用受支持的套件并重新启动。
备份后 运行,一切正常。
最终这是一个机器配置问题,而不是编码问题。
[注意:我与这个软件或其公司没有任何关系,我确信可以使用其他方法来实现这一点,但我知道这对我们有用]