#c# #asp.net-web-api2
Вопрос:
В ан ASP.NET Проект веб-Api с отключенным состоянием сеанса, если я создам следующее:
public class MyController : ApiController { [Route("doTheThing")] public async Task DoTheThing() { Debug.WriteLine($"Start DoTheThing"); await Task.Delay(30000); Debug.WriteLine($"End DoTheThing"); } }
И вызовите эту конечную точку 100 раз сразу из другого приложения, я получу результат:
Start DoTheThing (x100) (delay) End DoTheThing (x100)
Пока все идет хорошо, все работает одновременно.
Однако со следующими:
public class MyController : ApiController { [Route("doTheThing")] public async Task DoTheThing() { Debug.WriteLine($"Start DoTheThing"); await Task.Run(() =gt; Thread.Sleep(30000)); // A busy thread Debug.WriteLine($"End DoTheThing"); } }
Я получаю результат:
Start DoTheThing Start DoTheThing Start DoTheThing (delay) Start DoTheThing (delay) Start DoTheThing (delay) ... End DoTheThing (x100)
Мы потеряли (часть) параллелизма, который далек от идеала. Я полагаю, что это связано с ограничением по клиентскому соединению (предел безопасности), но не смог найти виновника.
Как я могу настроить это ограничение потока?