У меня есть asp. net core 3.1 приложение, которое предоставляет простой веб-сервис. Фактически, это приложение API шаблона Visual Studio, включая его WeatherForecastController.
Приложение, которое использует веб-сервис, также разработано мной, и я хотел бы инициировать некоторые тесты поведения по тайм-аутам запросов, просто чтобы узнать, как мой веб-сервис и как мое потребительское приложение обрабатывают таймауты. Поэтому я добавил определенный таймаут запроса в web.config веб-сервиса:
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore requestTimeout="00:00:20" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" hostingModel="OutOfProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_HTTPS_PORT" value="44382" />
<environmentVariable name="COMPLUS_ForceENC" value="1" />
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
Я также добавил ThreadSleep
300 секунд в метод моего контроллера:
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
try
{
Thread.Sleep(300000);
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
Très просто, ничего особенного.
Теперь проблема, с которой я сталкиваюсь, заключается в том, что я ожидаю, что возникнет какое-то исключение тайм-аута, как только оно превысит установленный лимит тайм-аута. Но этого не происходит. На самом деле настройки тайм-аута в web.config, похоже, полностью игнорируются. Как я могу проверить настройки тайм-аута в IIS Express? Я что-то пропустил? Или время ожидания игнорируется, только если я подключен к отладчику?