c# – 简单HTTPS请求中的System.Net.WebException
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 简单HTTPS请求中的System.Net.WebException,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2720字,纯文字阅读大概需要4分钟。
内容图文
![c# – 简单HTTPS请求中的System.Net.WebException](/upload/InfoBanner/zyjiaocheng/806/2caf15a86cd745b4ae70323118897c89.jpg)
我遇到了C#和简单的HTTPS-Request问题……
我想要请求这个URL:https://api.sipgate.com/v1/在webbrowser中它工作正常,但我的C#-Code不起作用:(有人知道我做错了吗?谢谢!
using System.Net;
using System.IO;
// [...]
WebRequest req = WebRequest.Create("https://api.sipgate.com/v1");
req.ContentType = "application/json";
try {
WebResponse res = req.GetResponse(); // Exception here...
Stream content = res.GetResponseStream();
Console.WriteLine((new StreamReader(content)).ReadToEnd());
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
这是一个例外:
System.Net.WebException: Die zugrunde liegende Verbindung wurde geschlossen: Unerwarteter Fehler beim Senden.. ---> System.IO.IOException: Fehler bei Authentifizierung, da die Gegenseite den Transportstream geschlossen hat.
bei System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
bei System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
bei System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
bei System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
bei System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
bei System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
bei System.Net.ConnectStream.WriteHeaders(Boolean async)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Net.HttpWebRequest.GetResponse()
bei Sipgate_Test.Program.Main(String[] args) in c:\users\abc\documents\visual studio 2017\Projects\def\hij\Program.cs:Zeile 24.
System.Net.WebException:
Error in authentication because the other side has closed the transport stream.
解决方法:
您缺少对SSL的支持.
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
using (WebClient Client = new WebClient())
string Content = Client.DownloadString("https://api.sipgate.com/v1");
编辑:
谢谢@Crowcoder指点这个.在生产环境中,如果没有验证,您绝不应接受任何证书. ServerCertificateValidationCallback提供了一种访问有关您通常无法获得的SSL证书的信息的方法.
例如,参数错误为您提供特定的证书错误,例如名称不匹配.参数链向您提供服务器发送的确切证书链,当系统存储缺少中间CA证书时,可以使用该证书链构建证书链.
ServicePointManager.ServerCertificateValidationCallback +=
(s, cert, chain, error) =>
{
return error == SslPolicyErrors.None;
};
内容总结
以上是互联网集市为您收集整理的c# – 简单HTTPS请求中的System.Net.WebException全部内容,希望文章能够帮你解决c# – 简单HTTPS请求中的System.Net.WebException所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。