c# - 为什么 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 服务器。
解决方案
推荐阅读
- java - 如何直接从 Java 中的其他类访问内部类方法?
- typescript - Typescript - 函数返回类型作为接口
- xaml - 无法绑定到可绑定属性 [Prism Application Xamarin Forms]
- c++ - 如何控制 Windows 中的应用程序窗口行为?
- python - 使用 boto3 在 Vultr 对象存储上预签名 URL
- php - 在 MAC OS 上将 postgresSQL 与 XAMPP 连接
- r - 如何在 R 中为 HoltWinters 的这个循环添加预测准确性?
- android - Activity 的 LiveData 泄露了 Fragment
- python - 如何过滤 pd.io.formats.style.Styler pandas 对象
- kotlin - 如何在片段类中创建静态回收器视图适配器 - Kotlin?