У меня есть автономный веб-API, использующий OWIN, и я, кажется, борюсь с одновременными подключениями. Когда я запускаю стресс-тест с 50 одновременными событиями получения, время отклика увеличивается НАМНОГО, даже если операция довольно проста, верните 200 OK с идентификатором, введенным в uri.
Как мне сделать так, чтобы мои контроллеры OWIN и API для веб-API выполнялись одновременно для каждого запроса??
Вот пример моего проекта:
Стартовый класс
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
try
{
appBuilder.UseWelcomePage("/welcome.html");
appBuilder.UseErrorPage(new ErrorPageOptions
{
ShowExceptionDetails =
#if DEBUG
true
#else
false
#endif
});
Debug.WriteLine($"Setting Web Api Configuration up...");
var apiConfig = ConfigureWebApi();
appBuilder.UseWebApi(new HttpServer(apiConfig));
appBuilder.UseCors(CorsOptions.AllowAll);
Debug.WriteLine($"Completed Web Api configuration.");
}
catch (Exception ex)
{
Debug.WriteLine($"Failed to complete Web Api setup.", ex);
throw;
}
}
}
Контроллер
public class TestController : ApiController
{
public async Task<IHttpActionResult> Get(int id)
{
return Task<IHttpActionResult>.Factory.StartNew(() => {
try
{
return Ok(id);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message, nameof(Get));
return InternalServerError();
}
});
}
}
Мой консольный запуск веб-API:
public static void Open()
{
_webApp = WebApp.Start<Startup>(HostAddress);
Console.WriteLine($"Host open -> {HostAddress}");
}