Asp.net core 如何在IISExpress中测试请求超时
我有一个asp.NETCore3.1应用程序,它提供了一个简单的web服务。事实上,它是Visual Studio的模板API应用程序,包括其WeatherForecastController 使用web服务的应用程序也是由我开发的,我想对请求超时启动一些行为测试,以了解我的web服务以及我的消费者应用程序如何处理超时。Asp.net core 如何在IISExpress中测试请求超时,asp.net-core,iis-express,asp.net-core-3.1,Asp.net Core,Iis Express,Asp.net Core 3.1,我有一个asp.NETCore3.1应用程序,它提供了一个简单的web服务。事实上,它是Visual Studio的模板API应用程序,包括其WeatherForecastController 使用web服务的应用程序也是由我开发的,我想对请求超时启动一些行为测试,以了解我的web服务以及我的消费者应用程序如何处理超时。 因此,我在webservice的web.config中添加了一个定义的请求超时: <system.webServer> <handlers>
因此,我在webservice的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>
很简单,没什么特别的
现在,我面临的挑战是,一旦超过了定义的超时限制,我会期望出现某种超时异常。但这并没有发生。实际上,web.config中的超时设置似乎被完全忽略。
如何在IISExpress中测试超时设置?我是不是错过了一个场景?或者,只有当我附加了调试器时才会忽略超时?requestTimeout属性不适用于进程内托管。。你能试着用Kestrel托管,看看它是否有效吗?它不是进程中的,而是进程外的(请参阅web.config=>
hostingModel=“OutOfProcess”
)“web服务的web.config”,那么该web.config是哪条路径?因为它仍然包含%LAUNCHER\u PATH%
,所以不太可能是正确的。
[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;
}
}