我在获取google API
返回数据时遇到错误"底层连接已关闭:发送时发生意外错误"
它在本地很好,但我已经发布并上传到服务器,我遇到了这个错误。请帮帮我……最好把…
WebClient webClient = new WebClient();
Stream stream = webClient.OpenRead("https://www.googleapis.com/oauth2/v1/userinfo?access_token=[Access_Token]);
string b;
/*I have not used any JSON parser because I do not want to use any extra dll/3rd party dll*/
using (StreamReader br = new StreamReader(stream))
{
b = br.ReadToEnd();
}
您的连接连接到HTTPS端点,它可能需要TLS 1.2,这可能不是您的客户端的默认TLS版本;这是一个修复旧版本的。net:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
当客户端计算机无法发送HTTP请求时,会发生此问题。客户端计算机无法发送HTTP请求,因为连接已关闭或不可用。当客户端计算机发送大量数据时,可能会出现此问题。
访问https://support.microsoft.com/en-us/kb/915599
参见分辨率A、D、E、F和O可能对您有所帮助。
更新1:很遗憾,上面的链接已经断开。
要在。net Framework 4.0中适应TLS1.2,请尝试:
ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType)
如果TLS 1.2不适合您,请尝试以下操作:
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
下面是一些关于TLS和。net支持的信息:
。NET 4.6及以上版本。您不需要做任何额外的工作来支持TLS 1.2,默认支持。
。NET 4.5。 TLS 1.2是受支持的,但它不是默认协议。你需要选择加入使用它。下面的代码将使TLS 1.2成为默认值,请确保执行在连接到受保护的资源之前:ServicePointManager。SecurityProtocol =安全协议类型。Tls12
。NET 4.0。 TLS 1.2是不支持的,但是如果你的系统上安装了。net 4.5(或更高版本),那么你仍然可以选择TLS 1.2您的应用程序框架不支持它。唯一的问题是.NET 4.0中的安全协议类型没有相应的条目TLS1.2,所以我们必须使用这个枚举的数字表示形式值:ServicePointManager。SecurityProtocol =(SecurityProtocolType)
3072;。NET 3.5或以下版本。 TLS 1.2不支持(*),没有解决方法。将应用程序升级到最新版本的框架。
有关TLS和。net支持的更多信息,请访问以下链接:
TLS 1.2和。net支持:如何避免连接错误