Можно ли установить значение "aspNetCore requestTimeout" ......... через "код" с помощью Kestrel? - PullRequest
0 голосов
/ 11 марта 2020

Можно ли установить значение "aspNetCore requestTimeout" (см. xml ниже) ......... через "код" с Kestrel?

Я не могу найти что-то в KestrelServerLimits object.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.kestrel.core.kestrelserverlimits?view=aspnetcore-3.1

Ниже приведен код xml .......... но мы надеемся сделать это в CODE, а не через (опубликовано) 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);") ...... но это не не контролирует время ожидания сервера из моих тестов почтальона.

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);
                    });

                });
    }
}

Я читал из этой статьи Microsoft:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#kestrel -опции

Параметры Kestrel Веб-сервер Kestrel имеет параметры конфигурации ограничений, которые особенно полезны в развертываниях с Inte rnet.

Установка ограничений для свойства Limits класса KestrelServerOptions. Свойство Limits содержит экземпляр класса KestrelServerLimits.

1 Ответ

1 голос
/ 11 марта 2020

Нет. В этой проблеме GitHub говорится:

Нет способа принудительно прекратить. NET Задачи. Вот почему мы не можем сами остановить процессы запуска из-под процессора.

requestTimeout в web.config - это тайм-аут для IIS, который прекратит ожидать ответа от вашего веб-приложения и вернет 500 ошибок клиенту , но ваш веб-сервер (Kestrel) продолжит обрабатывать запрос. И никто не может его прервать (поможет только перезапуск процесса kestrel), поэтому в kestrel такой настройки нет.

...