Максимальная резьба по соединению в ASP.NET ApiController

#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)  

Мы потеряли (часть) параллелизма, который далек от идеала. Я полагаю, что это связано с ограничением по клиентскому соединению (предел безопасности), но не смог найти виновника.

Как я могу настроить это ограничение потока?