嗨,亲爱的陌生人!
我为我的电报机器人做了一个控制台申请。在我的笔记本电脑上,它工作得很好,但是在我想要作为服务器使用的PC上,这段代码会出现错误。我花了一整天的时间来解决这个问题,并在这里讨论了很多类似的话题,但没有找到任何解决方案。
问题出现在代码的这一部分:
try {
var webClient = new WebClient();
webClient.DownloadString($"{startUrl}/sendMessage?chat_id={messageFromId}&text=" + number.ToString());
}
catch (Exception e){
Console.WriteLine(e.ToString());
}我如何避免SSL证书,因为我不是在这里寻找真正的安全?
错误如下:
> 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请求之前进行此操作。帮不上忙:
ServicePointManager.ServerCertificateValidationCallback +=
delegate (object sender, X509Certificate certificate, X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
return true;
};2)使用委托禁用SSL
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };3)你的想法是下一个?
或者我只是错误地使用了以前的解决方案?不要错过,让我们试试你的想法吧!
谢谢!
发布于 2020-07-06 13:15:28
有时,导致这种错误的原因是TLS协议的旧版本,例如,当客户端应用程序使用TLSv1.0时--服务器端通常不推荐(不允许)使用TLSv1.0。在这种情况下,SSL服务器通常只是删除连接,因此客户端抛出此异常。
因此,尝试为客户端启用TLS1.1和TLS1.2 (取决于您使用的框架版本)是有意义的。只需在英文上搜索相应的错误描述(这似乎是“现有连接被远程主机强制关闭”)。
发布于 2020-07-07 16:40:30
幸运的是,我找到了失败的原因。我正在处理电报,目前在Russia.So上被屏蔽了,我的请求根本不起作用。我用代理修正了这个问题。案子解决了。
https://stackoverflow.com/questions/61965468
复制相似问题