首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebClient SSL错误:"System.Net.WebException:无法建立System.Net.WebException连接“

WebClient SSL错误:"System.Net.WebException:无法建立System.Net.WebException连接“
EN

Stack Overflow用户
提问于 2020-05-22 23:36:50
回答 2查看 796关注 0票数 0

嗨,亲爱的陌生人!

我为我的电报机器人做了一个控制台申请。在我的笔记本电脑上,它工作得很好,但是在我想要作为服务器使用的PC上,这段代码会出现错误。我花了一整天的时间来解决这个问题,并在这里讨论了很多类似的话题,但没有找到任何解决方案。

问题出现在代码的这一部分:

代码语言:javascript
复制
try {
    var webClient = new WebClient();
    webClient.DownloadString($"{startUrl}/sendMessage?chat_id={messageFromId}&text=" + number.ToString());
}

 catch (Exception e){
    Console.WriteLine(e.ToString());
}

我如何避免SSL证书,因为我不是在这里寻找真正的安全?

错误如下:

代码语言:javascript
复制
> System.Net.WebException: The SSL connection could not be established,
> see inner exception. Unable to read data from the transport
> connection: Удаленный хост принудительно разорвал существующее
> подключение..  ---> System.Net.Http.HttpRequestException: The SSL
> connection could not be established, see inner exception.  --->
> System.IO.IOException: Unable to read data from the transport
> connection: Удаленный хост принудительно разорвал существующее
> подключение..  ---> System.Net.Sockets.SocketException (10054):
> Удаленный хост принудительно разорвал существующее подключение.    ---
> End of inner exception stack trace ---    at
> System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError
> error, CancellationToken cancellationToken)    at
> System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16
> token)    at System.Net.FixedSizeReader.ReadPacketAsync(Stream
> transport, AsyncProtocolRequest request)    at
> System.Net.Security.SslStream.ThrowIfExceptional()    at
> System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult
> lazyResult)    at
> System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult
> result)    at
> System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult
> asyncResult)    at
> System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__65_1(IAsyncResult
> iar)    at
> System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult
> iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean
> requiresSynchronization)
> --- End of stack trace from previous location where exception was thrown ---

我已经尝试过的:

1)在WebClient请求之前进行此操作。帮不上忙:

代码语言:javascript
复制
ServicePointManager.ServerCertificateValidationCallback +=
   delegate (object sender, X509Certificate certificate, X509Chain chain,
          SslPolicyErrors sslPolicyErrors)
   {
       return true;
   };

2)使用委托禁用SSL

代码语言:javascript
复制
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

3)你的想法是下一个?

或者我只是错误地使用了以前的解决方案?不要错过,让我们试试你的想法吧!

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-07-06 13:15:28

有时,导致这种错误的原因是TLS协议的旧版本,例如,当客户端应用程序使用TLSv1.0时--服务器端通常不推荐(不允许)使用TLSv1.0。在这种情况下,SSL服务器通常只是删除连接,因此客户端抛出此异常。

因此,尝试为客户端启用TLS1.1和TLS1.2 (取决于您使用的框架版本)是有意义的。只需在英文上搜索相应的错误描述(这似乎是“现有连接被远程主机强制关闭”)。

票数 0
EN

Stack Overflow用户

发布于 2020-07-07 16:40:30

幸运的是,我找到了失败的原因。我正在处理电报,目前在Russia.So上被屏蔽了,我的请求根本不起作用。我用代理修正了这个问题。案子解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61965468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档