Я хочу отправить много коротких независимых запросов HTTP POST в простое приложение .NET webapi. Запросы создаются в цикле, и каждый из них отправляется с использованием нового TCP-соединения. Здесь важно, что каждый http-запрос записывает только на сервер, не ожидая ответа. Цикл So основан на операциях:
- запрос на создание
- открытый сокет
- запрос на запись
- закрытие сокета
В таком приложении scenerio webapi (ASP.NET MVC 5.2.7), размещенном на IIS 10, не поступает ни один из входящих запросов. Управление никогда не передается соответствующему методу в ApiController. Я заметил, что дополнительный сон (например, 100 мс), добавленный между записью сокета и закрытием, устраняет проблему. Но минимизация продолжительности сна приводит к увеличению количества пропущенных запросов. Также ожидание чтения сокета (ответ) является исправлением. Но это не удовлетворяет. Я не могу дождаться ответа сервера или добавить дополнительную задержку. Что здесь интересно, куча созданных запросов - не проблема. Даже один запрос, созданный таким образом, не появляется на другой стороне.
Что может быть причиной такого поведения?
Я тестировал подобное приложение webapi в ASP.NET Core 2.1. Kestrel обрабатывает все запросы как следует. Также работает отправка этих запросов на простой сервер TcpListener.