底层连接已关闭:发送时发生了意外错误

9

我正在尝试在本地运行/调试我的云项目,但是服务总线连接一直崩溃并显示错误:

<15:46:59> MessagingFactory successfully created
<15:47:39> Exception: The underlying connection was closed: An unexpected error occurred on a send.. 

....
   System.IO.IOException: Unable to read data from the transport connection: 
    An existing   connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)
   at System.Net.PooledStream.EndWrite(IAsyncResult asyncResult)
   at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)}

使用Service Bus Explorer工具时,我收到了这个错误。

在部署到云上时,一切都很正常,服务总线连接也没问题。

有谁能帮我解决这个问题?可能是什么原因呢? 提前感谢您的帮助!

2个回答

32

可能问题出在SSL证书验证协议上。尝试以下步骤强制使用最新的协议类型。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

6
这个救了我。.NET 4.7似乎有一个不同的行为,即默认的TLS不是1.2版本。 - Simon
哦,谢谢!我一直在使用sendgrid,他们开始强制执行TLS 1.2,但他们的示例代码并没有提到设置这个。我添加了这个设置后,它开始工作了,并且不再出现强制关闭的错误。 - Steven Edison

3
以下是与此错误相关的几个原因,请检查以下内容:
  • 您已正确配置设置。
  • 您系统中的防火墙允许连接(协议、主机和端口)。
  • 在您的网络中配置的 DNS 服务器能够解析主机。
  • 由于任何原因,您的ISP未阻止您的连接。
由于没有固定的解决方案,您可能需要花费一些精力来找出实际问题。如果启用了日志文件,您还可以从中找到一些有用的信息。

除非供应商更改,否则可以确认第一次检查是OK的。其他人可能仍需要验证,因为最后两个情况很可能会发生。 - pushpraj
1
很好的发现,这种问题真的很难排除。 - pushpraj
对于任何正在搜索的人:还要检查您的代理设置。我们通过组策略设置了代理。它不应该适用于服务器,但是这个服务器在错误的AD组中。因此我没有在路由器上看到任何数据包,所有的数据都被Squid服务器拦截/关闭。我花了很长时间才弄清楚这一点。 - s.co.tt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接