c# - 如何确定是什么正在重置我的连接?

标签 c# azure .net-core tcp azure-container-service

我有一个客户端和服务器,基于TcpListenerTcpClient 。客户端连接到服务器并交换一些数据。当我在本地运行时,一切正常。

但是当我将服务器放入 Azure 容器服务上的 Docker 容器中并将客户端连接到它时,会发生以下情况:

  • 客户端成功连接到服务器
  • 客户端和服务器成功握手
  • 数据传输开始
  • 大约 20 秒后(这应该需要几分钟)整个事情就爆炸了。服务器报告“连接被对等方重置”,客户端报告“读取超出流末尾的错误。”

双方似乎都认为对方是有问题的一方。当我在本地运行时,一切都按预期运行,这让我相信问题介于两者之间。

建立连接不存在根本问题,例如防火墙妨碍,因为我已经在两端验证了它们正在连接并执行握手。客户端不是"slamming the phone down" ;它期待来自服务器的更多数据。但“连接被对等方重置”意味着某个地方有人故意发送 RST 数据包。

有什么好的方法可以找出干扰我的数据传输的因素吗?

最佳答案

对于 Azure 容器服务(无论是 Azure 容器实例还是 Azure Kubernetes 服务),间歇性连接问题的主要原因是在建立新的出站连接时达到限制。您可以达到的限制包括:

  • TCP 连接
  • SNAT 端口

请参阅:

更多信息:

关于c# - 如何确定是什么正在重置我的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70130993/

相关文章:

c# - 如何在不涉及VBA代码的情况下通过C#使用Application.OnKey?

c# - .NET 加密问题

c# - 基于另一个一维数组的 3 维数组快速排序

c# - AppContextSwitchOverrides 不起作用,在授权上下文中发现 3 个 DNS 声明

azure - 在 Azure 网站上的 DotNetNuke 中部署扩展时出现问题

.net - 对不包括依赖项的 .netstandard 项目的项目引用

c# - 为什么 is-operator 会导致不必要的装箱?

azure - Azure ASE 中的应用程序需要使用 NTML Web 服务进行身份验证

unit-testing - 单元测试在构建服务器上执行缓慢

ajax - Firefox 中的 ASP.NET Core API POST 参数始终为 null