首页 > 解决方案 > 为什么 IIS 过滤掉使用原始 TCP 套接字发送的 HTTP POST 请求并在写入后立即关闭

问题描述

我正在准备向简单的 .NET webapi 应用程序发送许多简短的独立 http POST 请求。请求是循环创建的,每个请求都使用新的 TCP 连接发送。这里重要的是每个 http 请求只写入服务器而不等待任何响应。所以循环是基于操作的:

在 IIS 10 上托管的此类场景 webapi 应用程序 (ASP.NET MVC 5.2.7) 不会收到任何传入请求。控制永远不会转移到 ApiController 中的相应方法。我注意到在套接字写入和关闭之间添加的额外睡眠(例如 100 毫秒)消除了问题。但是最小化睡眠时间会导致丢失请求的数量增加。等待套接字读取(响应)也是一个修复。但它并不令人满意。我不能等待服务器响应或增加额外的延迟。这里有趣的是一堆创建的请求不是问题。即使以这种方式创建的一个请求也不会出现在另一侧。

这种行为的原因可能是什么?

我在 ASP.NET Core 2.1 中测试了类似的 webapi 应用程序。Kestrel 按理处理所有请求。也可以将这些请求发送到简单的 TcpListener 服务器。

标签: c#iisasp.net-web-apitcp

解决方案


推荐阅读