События
Чемпионат мира Power BI DataViz
14 февр., 16 - 31 мар., 16
С 4 шансами войти, вы можете выиграть пакет конференции и сделать его в LIVE Grand Finale в Лас-Вегасе
ПодробнееЭтот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Важно!
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 9 этой статьи.
Веб-сервер Kestrel имеет ограничивающие параметры конфигурации, которые удобно использовать в развертываниях с выходом в Интернет. Чтобы настроить Kestrel параметры конфигурации, вызовите команду ConfigureKestrel в Program.cs
:
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(serverOptions =>
{
// ...
});
Задать ограничения для свойства KestrelServerOptions.Limits. Это свойство содержит экземпляр класса KestrelServerLimits.
KeepAliveTimeout возвращает или задает время ожидания проверки на активность:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2);
});
Это время ожидания не применяется при присоединении отладчика к Kestrel процессу.
MaxConcurrentConnections возвращает или задает максимальное количество открытых подключений к службе:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentConnections = 100;
});
MaxConcurrentUpgradedConnections возвращает или задает максимальное количество открытых, обновленных подключений к службе:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
});
Обновленное соединение — это подключение, которое было переключено с HTTP на другой протокол, например WebSockets. После изменения подключение не учитывается в пределе MaxConcurrentConnections
.
MaxRequestBodySize возвращает или задает максимально допустимый размер текста запроса в байтах.
Чтобы переопределить это ограничение в приложении MVC ASP.NET Core, мы рекомендуем использовать атрибут RequestSizeLimitAttribute в методе действия:
[RequestSizeLimit(100_000_000)]
public IActionResult Get()
В следующем примере выполняется настройка MaxRequestBodySize
для всех запросов:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxRequestBodySize = 100_000_000;
});
В следующем примере выполняется настройка MaxRequestBodySize
для конкретного запроса, использующегося IHttpMaxRequestBodySizeFeature в настраиваемом ПО промежуточного слоя:
app.Use(async (context, next) =>
{
var httpMaxRequestBodySizeFeature = context.Features.Get<IHttpMaxRequestBodySizeFeature>();
if (httpMaxRequestBodySizeFeature is not null)
httpMaxRequestBodySizeFeature.MaxRequestBodySize = 10 * 1024;
// ...
await next(context);
});
Если приложение пытается настроить ограничение на запросы после того, как оно уже начало чтение запроса, выдается исключение. Используйте свойство IHttpMaxRequestBodySizeFeature.IsReadOnly, чтобы проверить, является ли оно защищенным для установки свойства MaxRequestBodySize
.
При запуске приложения вне процесса, который обслуживает модуль ASP.NET Core, IIS устанавливает ограничение, ограничение на размер текста запроса Kestrel будет отключено.
Kestrel каждую секунду проверяет, поступают ли данные с указанной скоростью в байтах в секунду. Если скорость падает ниже минимума, для подключения истекает время ожидания. Льготный период — это время, которое Kestrel дает клиенту на увеличение его скорости отправки до минимального уровня. В течение этого периода скорость не проверяется. Льготный период помогает избежать разрыва соединений, которые первоначально отправляют данные с небольшой скоростью из-за медленного запуска TCP. Минимальная скорость также применяется к отклику.
MinRequestBodyDataRate возвращает или задает минимальную скорость передачи текста запроса в байтах в секунду. MinResponseDataRate возвращает или задает минимальную скорость ответа в байтах в секунду.
В следующем примере выполняется настройка MinRequestBodyDataRate
и MinResponseDataRate
для всех запросов:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MinRequestBodyDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Limits.MinResponseDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
});
В следующем примере выполняется настройка MinRequestBodyDataRate
и MinResponseDataRate
для конкретного запроса, использующегося IHttpMinRequestBodyDataRateFeature и IHttpMinResponseDataRateFeature в настраиваемом ПО промежуточного слоя:
app.Use(async (context, next) =>
{
var httpMinRequestBodyDataRateFeature = context.Features
.Get<IHttpMinRequestBodyDataRateFeature>();
if (httpMinRequestBodyDataRateFeature is not null)
{
httpMinRequestBodyDataRateFeature.MinDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
}
var httpMinResponseDataRateFeature = context.Features
.Get<IHttpMinResponseDataRateFeature>();
if (httpMinResponseDataRateFeature is not null)
{
httpMinResponseDataRateFeature.MinDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
}
// ...
await next(context);
});
IHttpMinResponseDataRateFeature
не присутствует в HttpContext.Features для запросов HTTP/2. Изменение ограничений скорости на уровне отдельных запросов обычно не поддерживается для HTTP/2, поскольку этот протокол поддерживает мультиплексирование запросов. Но возможности IHttpMinRequestBodyDataRateFeature
все еще присутствуют в HttpContext.Features
для запросов HTTP/2, так как ограничение скорости чтения может быть полностью отключено для отдельных запросов. Чтобы сделать это, задайте для параметра IHttpMinResponseDataRateFeature.MinDataRate значение null
(даже для запроса HTTP/2). Попытки прочитать свойство IHttpMinRequestBodyDataRateFeature.MinDataRate
или попытки установить для него значение, отличное от null
, приводят к ошибке NotSupportedException для запросов HTTP/2.
Ограничения скорости на уровне сервера, которые настроены с помощью KestrelServerOptions.Limits, по-прежнему применяются к подключениям HTTP/1.x и HTTP/2.
RequestHeadersTimeout возвращает или задает максимальное время, которое сервер уделяет получению заголовков запросов.
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(1);
});
Это время ожидания не применяется при присоединении отладчика к Kestrel процессу.
В этом разделе ограничения устанавливаются в KestrelServerLimits.Http2.
MaxStreamsPerConnection ограничивает количество параллельных потоков запросов для одного соединения HTTP/2. Потоки сверх этого числа будут отклонены.
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.MaxStreamsPerConnection = 100;
});
HeaderTableSize ограничивает размер таблиц сжатия заголовков в октетах, которые могут использоваться кодировщиком HPACK и декодером на сервере. Декодер HPACK распаковывает заголовки HTTP для подключений HTTP/2.
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.HeaderTableSize = 4096;
});
MaxFrameSize указывает размер самых крупных полезных данных кадра, которые могут быть получены в октетах:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.MaxFrameSize = 16_384;
});
MaxRequestHeaderFieldSize указывает максимально допустимый размер последовательности полей заголовка запроса. Это ограничение применяется к последовательностям имен и значений в их сжатых и несжатых представлениях.
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.MaxRequestHeaderFieldSize = 8192;
});
InitialConnectionWindowSize указывает, сколько данных текста запроса сервер готов принять и буферизировать за один раз, агрегируя все запросы (потоки) на одно соединение:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.InitialConnectionWindowSize = 131_072;
});
Размеры запросов также ограничиваются параметром InitialStreamWindowSize
.
InitialStreamWindowSize указывает, сколько данных текста запроса сервер готов принять и буферизировать за один раз, на один поток данных:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.InitialStreamWindowSize = 98_304;
});
Размеры запросов также ограничиваются параметром InitialConnectionWindowSize
.
Kestrel можно настроить для отправки пакетов проверки связи HTTP/2 подключенным клиентам. Проверка связи HTTP/2 служит нескольким целям.
Для настройки проверки связи для проверки активности HTTP/2 есть два параметра.
В следующем примере задается значение KeepAlivePingDelay
и KeepAlivePingTimeout
:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.KeepAlivePingDelay = TimeSpan.FromSeconds(30);
serverOptions.Limits.Http2.KeepAlivePingTimeout = TimeSpan.FromMinutes(1);
});
AllowSynchronousIO определяет, разрешены ли синхронные операции ввода-вывода для запроса и ответа.
Предупреждение
Выполнение большого числа заблокированных операций синхронного ввода-вывода может привести к перегрузке пула потоков и зависанию приложения. Включайте AllowSynchronousIO
, только если вы используете библиотеку, которая не поддерживает асинхронные операции ввода-вывода.
В примере ниже включаются синхронные операции ввода-вывода:
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.AllowSynchronousIO = true;
});
Сведения о других параметрах и ограничениях Kestrel см. в следующих разделах:
Некоторые ограничения времени ожидания и скорости не применяются при присоединении отладчика к Kestrel процессу. Дополнительные сведения см. в разделе "Поведение с подключенным отладчиком".
Веб-сервер Kestrel имеет ограничивающие параметры конфигурации, которые удобно использовать в развертываниях с выходом в Интернет.
Чтобы предоставить дополнительную конфигурацию после вызова ConfigureWebHostDefaults, используйте ConfigureKestrel:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(serverOptions =>
{
// Set properties and call methods on options
})
.UseStartup<Startup>();
});
Задать ограничения для свойства Limits в классе KestrelServerOptions. Свойство Limits
содержит экземпляр класса KestrelServerLimits.
В следующих примерах используется пространство имен Microsoft.AspNetCore.Server.Kestrel.Core.
using Microsoft.AspNetCore.Server.Kestrel.Core;
Примечание
KestrelServerOptions и конфигурацию конечных точек можно настроить из поставщиков конфигурации. Оставшаяся конфигурация Kestrel должна настраиваться в коде C#.
Получает или задает время ожидания проверки на активность. Значение по умолчанию — 2 минуты.
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentConnections = 100;
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
serverOptions.Limits.MinRequestBodyDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Limits.MinResponseDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Listen(IPAddress.Loopback, 5000);
serverOptions.Listen(IPAddress.Loopback, 5001,
listenOptions =>
{
listenOptions.UseHttps("testCert.pfx",
"testPassword");
});
serverOptions.Limits.KeepAliveTimeout =
TimeSpan.FromMinutes(2);
serverOptions.Limits.RequestHeadersTimeout =
TimeSpan.FromMinutes(1);
})
MaxConcurrentConnections
MaxConcurrentUpgradedConnections
Максимальное число одновременно открытых подключений TCP для всего приложения можно задать с помощью следующего кода:
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentConnections = 100;
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
serverOptions.Limits.MinRequestBodyDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Limits.MinResponseDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Listen(IPAddress.Loopback, 5000);
serverOptions.Listen(IPAddress.Loopback, 5001,
listenOptions =>
{
listenOptions.UseHttps("testCert.pfx",
"testPassword");
});
serverOptions.Limits.KeepAliveTimeout =
TimeSpan.FromMinutes(2);
serverOptions.Limits.RequestHeadersTimeout =
TimeSpan.FromMinutes(1);
})
Существует отдельный предел по подключениям, измененным с HTTP или HTTPS на другой протокол (например, по запросу WebSocket). После изменения подключение не учитывается в пределе MaxConcurrentConnections
.
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentConnections = 100;
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
serverOptions.Limits.MinRequestBodyDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Limits.MinResponseDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Listen(IPAddress.Loopback, 5000);
serverOptions.Listen(IPAddress.Loopback, 5001,
listenOptions =>
{
listenOptions.UseHttps("testCert.pfx",
"testPassword");
});
serverOptions.Limits.KeepAliveTimeout =
TimeSpan.FromMinutes(2);
serverOptions.Limits.RequestHeadersTimeout =
TimeSpan.FromMinutes(1);
})
По умолчанию максимальное число подключений не ограничено (null).
По умолчанию максимальный размер текста запроса составляет 30 000 000 байт, что примерно соответствует 28,6 МБ.
Чтобы переопределить это ограничение в приложении MVC ASP.NET Core, мы рекомендуем использовать атрибут RequestSizeLimitAttribute в методе действия:
[RequestSizeLimit(100000000)]
public IActionResult MyActionMethod()
В следующем примере показано, как настроить ограничение для приложения и каждого запроса:
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentConnections = 100;
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
serverOptions.Limits.MinRequestBodyDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Limits.MinResponseDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Listen(IPAddress.Loopback, 5000);
serverOptions.Listen(IPAddress.Loopback, 5001,
listenOptions =>
{
listenOptions.UseHttps("testCert.pfx",
"testPassword");
});
serverOptions.Limits.KeepAliveTimeout =
TimeSpan.FromMinutes(2);
serverOptions.Limits.RequestHeadersTimeout =
TimeSpan.FromMinutes(1);
})
Переопределите параметр для конкретного запроса в ПО промежуточного слоя:
app.Run(async (context) =>
{
context.Features.Get<IHttpMaxRequestBodySizeFeature>()
.MaxRequestBodySize = 10 * 1024;
var minRequestRateFeature =
context.Features.Get<IHttpMinRequestBodyDataRateFeature>();
var minResponseRateFeature =
context.Features.Get<IHttpMinResponseDataRateFeature>();
if (minRequestRateFeature != null)
{
minRequestRateFeature.MinDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
}
if (minResponseRateFeature != null)
{
minResponseRateFeature.MinDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
}
Если приложение пытается настроить ограничение для запроса после того, как оно начало считывать запрос, возникает исключение. Доступно свойство IsReadOnly
, указывающее, что свойство MaxRequestBodySize
находится в состоянии только для чтения и настраивать ограничение слишком поздно.
При запуске приложения вне процесса, который обслуживает модуль ASP.NET Core, ограничение на размер текста запроса Kestrel будет отключено. Это связано с тем, что оно уже задается в IIS.
MinRequestBodyDataRate
MinResponseDataRate
Kestrel каждую секунду проверяет, поступают ли данные с указанной скоростью в байтах в секунду. Если скорость падает ниже минимума, для подключения истекает время ожидания. Льготный период — это время, которое Kestrel дает клиенту на увеличение его скорости отправки до минимального уровня. В течение этого периода скорость не проверяется. Льготный период помогает избежать разрыва соединений, которые первоначально отправляют данные с небольшой скоростью из-за медленного запуска TCP.
Минимальная скорость по умолчанию составляет 240 байт/с, льготный период равен 5 секундам.
Минимальная скорость также применяется к отклику. Код для задания лимита запросов и лимита откликов различается только наличием RequestBody
или Response
в именах свойств и интерфейсов.
Ниже приведен пример, в который показано, как настроить минимальные показатели данных в Program.cs
:
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentConnections = 100;
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
serverOptions.Limits.MinRequestBodyDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Limits.MinResponseDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Listen(IPAddress.Loopback, 5000);
serverOptions.Listen(IPAddress.Loopback, 5001,
listenOptions =>
{
listenOptions.UseHttps("testCert.pfx",
"testPassword");
});
serverOptions.Limits.KeepAliveTimeout =
TimeSpan.FromMinutes(2);
serverOptions.Limits.RequestHeadersTimeout =
TimeSpan.FromMinutes(1);
})
Переопределите ограничения минимальной скорости для каждого запроса в ПО промежуточного слоя:
app.Run(async (context) =>
{
context.Features.Get<IHttpMaxRequestBodySizeFeature>()
.MaxRequestBodySize = 10 * 1024;
var minRequestRateFeature =
context.Features.Get<IHttpMinRequestBodyDataRateFeature>();
var minResponseRateFeature =
context.Features.Get<IHttpMinResponseDataRateFeature>();
if (minRequestRateFeature != null)
{
minRequestRateFeature.MinDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
}
if (minResponseRateFeature != null)
{
minResponseRateFeature.MinDataRate = new MinDataRate(
bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
}
IHttpMinResponseDataRateFeature, который упоминается в предыдущем примере, отсутствует в HttpContext.Features для запросов HTTP/2. Изменение ограничений скорости на уровне отдельных запросов обычно не поддерживается для HTTP/2, поскольку этот протокол поддерживает мультиплексирование запросов. Но возможности IHttpMinRequestBodyDataRateFeature все еще присутствуют в HttpContext.Features
для запросов HTTP/2, так как ограничение скорости чтения может быть полностью отключено для отдельных запросов. Чтобы сделать это, задайте для параметра IHttpMinResponseDataRateFeature.MinDataRate значение null
(даже для запроса HTTP/2). При попытке чтения свойства IHttpMinRequestBodyDataRateFeature.MinDataRate
или при попытке задать для него значение, отличное от null
, возникнет исключение NotSupportedException для запроса HTTP/2.
Ограничения скорости на уровне сервера, которые настроены с помощью KestrelServerOptions.Limits, по-прежнему применяются к подключениям HTTP/1.x и HTTP/2.
Получает или задает максимальное время, которое сервер уделяет получению заголовков запросов. Значение по умолчанию — 30 секунд.
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.MaxConcurrentConnections = 100;
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
serverOptions.Limits.MinRequestBodyDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Limits.MinResponseDataRate =
new MinDataRate(bytesPerSecond: 100,
gracePeriod: TimeSpan.FromSeconds(10));
serverOptions.Listen(IPAddress.Loopback, 5000);
serverOptions.Listen(IPAddress.Loopback, 5001,
listenOptions =>
{
listenOptions.UseHttps("testCert.pfx",
"testPassword");
});
serverOptions.Limits.KeepAliveTimeout =
TimeSpan.FromMinutes(2);
serverOptions.Limits.RequestHeadersTimeout =
TimeSpan.FromMinutes(1);
})
В этом разделе ограничения устанавливаются в KestrelServerLimits.Http2.
Ограничивает количество параллельных потоков запросов для одного подключения HTTP/2. Потоки сверх этого числа будут отклонены.
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.MaxStreamsPerConnection = 100;
});
Значение по умолчанию — 100.
Декодер HPACK распаковывает заголовки HTTP для подключений HTTP/2. HeaderTableSize
ограничивает размер таблицы сжатия заголовка, которую использует декодер HPACK. Это значение указывается в октетах и должно быть больше нуля (0).
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.HeaderTableSize = 4096;
});
Значение по умолчанию — 4096.
Указывает максимально допустимый размер полезных данных в кадре подключения HTTP/2, получаемых или отправляемых сервером. Это значение указывается в октетах и должно находиться в пределах от 2^14 (16 384) до 2^24-1 (16 777 215).
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.MaxFrameSize = 16384;
});
Значение по умолчанию — 2^14 (16 384).
Указывает максимально допустимый размер значений заголовка запроса (в октетах). Это ограничение применяется к имени и значению в их сжатых и несжатых представлениях. Значение должно быть больше нуля.
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.MaxRequestHeaderFieldSize = 8192;
});
Значение по умолчанию — 8 192.
Указывает максимальный объем данных текста запроса (в байтах), буферизируемый сервером за один раз, для всех запросов (потоков) на каждое подключение. Размеры запросов также ограничиваются параметром Http2.InitialStreamWindowSize
. Значение должно быть больше или равно 65 535 и меньше 2^31 (2 147 483 648).
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.InitialConnectionWindowSize = 131072;
});
Значение по умолчанию — 128 КБ (131 072).
Указывает максимальный объем данных текста запроса (в байтах), буферизируемый сервером за один раз, для каждого запроса (потока). Размеры запросов также ограничиваются параметром InitialConnectionWindowSize
. Значение должно быть больше или равно 65 535 и меньше 2^31 (2 147 483 648).
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.InitialStreamWindowSize = 98304;
});
Значение по умолчанию — 96 КБ (98 304).
Kestrel можно настроить для отправки пакетов проверки связи HTTP/2 подключенным клиентам. Проверка связи HTTP/2 служит нескольким целям.
Для настройки проверки связи для проверки активности HTTP/2 есть два параметра.
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Limits.Http2.KeepAlivePingDelay = TimeSpan.FromSeconds(30);
serverOptions.Limits.Http2.KeepAlivePingTimeout = TimeSpan.FromSeconds(60);
});
AllowSynchronousIO определяет, разрешены ли синхронные операции ввода-вывода для запроса и ответа. Значение по умолчанию — false
.
Предупреждение
Выполнение большого числа заблокированных операций синхронного ввода-вывода может привести к перегрузке пула потоков и зависанию приложения. Включайте AllowSynchronousIO
, только если вы используете библиотеку, которая не поддерживает асинхронные операции ввода-вывода.
В примере ниже включаются синхронные операции ввода-вывода:
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.AllowSynchronousIO = true;
})
Сведения о других параметрах и ограничениях Kestrel см. в следующих разделах:
Отзыв о ASP.NET Core
ASP.NET Core — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
События
Чемпионат мира Power BI DataViz
14 февр., 16 - 31 мар., 16
С 4 шансами войти, вы можете выиграть пакет конференции и сделать его в LIVE Grand Finale в Лас-Вегасе
Подробнее