在Kestrel中,是否可以通过“代码”设置“aspNetCore requestTimeout”值(参见下面的xml)?
我在KestrelServerLimits对象中找不到相关内容。
以下是xml代码........但希望通过代码而不是(发布的)xml来完成这个操作。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore requestTimeout="00:20:00" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
我尝试了以下代码(" serverOptions.Limits.KeepAliveTimeout = TimeSpan.FromSeconds(5); ")......但这并不能控制我的Postman测试中的服务器超时。
namespace MyStuff
{
using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.KeepAliveTimeout = TimeSpan.FromSeconds(5);
});
});
}
}
我一直在阅读微软的这篇文章:
Kestrel选项 Kestrel Web服务器具有约束配置选项,特别适用于面向互联网的部署。
在KestrelServerOptions类的Limits属性上设置约束。 Limits属性包含KestrelServerLimits类的实例。
connection.CommandTimeout = 0
一样聪明。 - user2864740