System.Net.Sockets.SocketException、"The underlying connection was closed unexpectedly",但它适用于开放式 HTTPDebugger

System.Net.Sockets.SocketException, "The underlying connection was closed unexpectedly", but it works with open HTTPDebugger

所以我和我公司的服务器通信。我发送数据(保存在 *.csv 文件中)并接收数据(用于版本检查,只是一个字符串)。 从一秒到另一秒(不更改代码或服务器端的任何内容),我从我的代码中得到这个异常:

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

这是我的代码:

' 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, 0, outData.Length)
End Using

正如你所看到的,我已经尝试了很多不同的方法来修复(老实说,我真的不知道我在做什么,我仍然需要在这个领域获得更多的知识)

有趣的是,当我启动 HTTPDebugger 时,错误并没有发生,我完全没有问题,一切正常。

所以我的猜测是 HTTPDebugger 以某种方式 installs/intercepts 具有我不知道的特定证书,然后服务器再次接受连接。 但是我如何提供这样的证书,从哪里获得它,我应该使用哪个。如果那不是问题:那会是什么?

原来 从 .NET 4.5 更新到 .NET 4.7.2 并再次编译解决了问题。

我不知道为什么会出现这个问题,也不知道如何解决这个问题,但这对我来说已经解决了。