System.Net.Sockets.SocketException,“基础连接意外关闭”,但它与打开的HTTPDebugger

问题描述

因此,我与公司的服务器通信。我发送数据(保存为* .csv文件)并接收数据(用于版本检查,仅是一个字符串)。 从一秒钟到另一秒钟(无需更改代码或服务器端的任何内容),我从代码中得到了此异常:

Thrown exception

基础连接意外关闭。发送数据时出错。->” [...]“ 无法从连接中读取数据:现有连接已被关闭远程主机 --->“

这是我的代码:

' Build data
' ...

' Create request and write data
Dim Agent As String = "> agent goes here <"
Dim Request As HttpWebRequest = DirectCast(HttpWebRequest.Create(Url),HttpWebRequest)
Request.UserAgent = Agent
Request.Method = "POST"
Request.ContentLength = outData.Length
Request.ContentType = "application/x-www-form-urlencoded"
Request.KeepAlive = False

Request.ProtocolVersion = HttpVersion.Version11                                     ' Fix 1
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3         ' Fix 2
                                                    Or SecurityProtocolType.Tls12
System.Net.ServicePointManager.Expect100Continue = True                             ' Fix 3
Request.Timeout = 1000000000                                                        ' Fix 4
Request.ReadWriteTimeout = 1000000000                                               ' Fix 5
Request.ClientCertificates.Add(New X509Certificate())                               ' Fix 6

Using Stream As IO.Stream = Request.GetRequestStream                                ' Exception still gets thrown here
Stream.Write(outData,outData.Length)
End Using

如您所见,我已经尝试了多种不同的修复方法(老实说,我真的不知道该怎么做,我仍然需要在该领域获得更多的知识)

有趣的是,当我启动HTTPDebugger时,不会发生错误,也没有任何问题,一切都很好。

所以我的猜测是HTTPDebugger以某种方式安装/拦截了我不知道的某个证书,然后服务器再次接受了连接。 但是,我该如何提供这样的证书,在哪里获得以及应该使用哪个证书。如果那不是问题,那会是什么?

解决方法

结果证明从.NET 4.5更新到.NET 4.7.2 ,然后再次编译即可解决问题。

我不知道为什么会发生此问题,否则本来可以解决的,但这对我来说已经解决了。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...