Сервер среды выполнения <сервераRuntime>

Общие сведения

Элемент <serverRuntime> настраивает следующие параметры, связанные с серверной средой выполнения служб IIS 7:

  • Если для атрибута enabledзадано значение true , iis 7 будут настроены для обслуживания содержимого по URL-адресу, <serverRuntime> в котором настроен элемент; если задать для атрибута enabledзначение false , служба IIS 7 не будет обслуживать содержимое для этого URL-адреса.

  • Атрибут alternateHostName задает имя узла, отличное от имени компьютера в заголовке HTTP Content-location.

  • Атрибут appConcurrentRequestLimit указывает максимальное количество одновременных запросов, которые можно поместить в очередь для приложения.

  • Атрибут enableNagling включает или отключает nagling, что является оптимизацией для HTTP по ПРОТОКОЛу TCP, что повышает эффективность, пытаясь свести к минимуму количество пакетов, необходимых перед отправкой данных . Он работает, ожидая отправки пакета, пока его область данных не будет заполнена, пока не истечет 200 миллисекунда времени ожидания или пока отправитель не укажет, что отправка данных завершена. СЛУЖБЫ IIS версии 5.1 и более ранних версий используют nagling для всех данных, отправляемых клиенту.

    Примечание

    Наглинг имеет возможный недостаток; Если расширение не заполняет пакет, перед отправкой ответа по-прежнему возникает задержка в 200 миллисекундах. Такое поведение чаще всего наблюдается при использовании расширений ISAPI, поддерживающих заголовок HTTP Keep-Alive в ответе клиенту. В этом случае IIS не закрывает подключение после ответа, поэтому окончательный пакет ожидает 200 миллисекунда.

  • IIS 7 проверяет состояние двух атрибутов, чтобы определить уровень трафика для определенного URL-адреса. Атрибут frequentHitThreshold настраивает количество запросов, а атрибут frequentHitTimePeriod — время, отведенное до того, как этот URL-адрес будет считаться часто встречающимся. Эти сведения используются при написании модулей HTTP, которые используют эти сведения для обработки. Дополнительные сведения см. в статье Метод IHttpUrlInfo::IsFrequentlyHit .

  • Атрибуты maxRequestEntityAllowed и uploadReadAheadSize соответственно настраивают ограничения для максимального числа байтов, разрешенного в теле сущности запроса, и количества байтов, которые веб-сервер считывает в буфер и передает расширению ISAPI. Следует учитывать, что увеличение этих значений позволяет конечному пользователю отправлять больше содержимого, что может повлиять на ресурсы памяти среды выполнения IIS. Рекомендуется поддерживать эти значения в соответствии с потребностями приложения и использовать максимальное значение только в крайних случаях.

Новые возможности в IIS 7.5

СЛУЖБЫ IIS 7.5 добавили атрибут authenticatedUserOverride к элементу <serverRuntime> , который указывает, будет ли среда выполнения сервера IIS 7 предоставлять удостоверение прошедшего проверку подлинности пользователя или удостоверение рабочего процесса в методах IHttpUser::GetPrimaryToken и IHttpUser::GetImpersonationToken . Для этого атрибута можно задать значение UseAuthenticatedUser или UseWorkerProcessUser, и эти значения соответственно указывают, будет ли среда выполнения сервера IIS 7 предоставлять удостоверение пользователя, прошедшего проверку подлинности, или удостоверение рабочего процесса для любого модуля, использующем олицетворение.

Совместимость

Версия Примечания
IIS 10.0 Элемент <serverRuntime> не был изменен в IIS 10.0.
IIS 8,5 Элемент <serverRuntime> не был изменен в IIS 8.5.
IIS 8,0 Элемент <serverRuntime> не был изменен в IIS 8.0.
IIS 7,5 Атрибут authenticatedUserOverride был добавлен в IIS 7.5.
IIS 7.0 Элемент <serverRuntime> появился в IIS 7.0.
IIS 6,0 Элемент <serverRuntime> заменяет следующие свойства метабазы IIS 6.0:
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadaheadSize

Настройка

Элемент <serverRuntime> включен в установку iis 7 по умолчанию.

Инструкции

Отсутствует пользовательский интерфейс, позволяющий настроить <serverRuntime> элемент для IIS 7. Примеры настройки <serverRuntime> элемента программными средствами см. в разделе Примеры кода этого документа.

Конфигурация

Атрибуты

Атрибут Описание
alternateHostName Необязательный строковый атрибут.

Указывает имя узла, используемого для перенаправления.
appConcurrentRequestLimit Необязательный атрибут uint.

Указывает максимальное количество запросов, которые можно поместить в очередь для приложения.

Значение по умолчанию — 5000.
authenticatedUserOverride Необязательный атрибут перечисления.

Указывает, будет ли среда выполнения сервера IIS 7 предоставлять удостоверение пользователя, прошедшего проверку подлинности, или удостоверение рабочего процесса для модулей, использующих олицетворение.

Примечание: Этот атрибут был добавлен в IIS 7.5.
Значение Описание
UseAuthenticatedUser Указывает, что IIS предоставит маркер пользователя, прошедшего проверку подлинности; Приложения, которые выполняются в этом контексте, будут ограничены любыми ограничениями доступа для удостоверения пользователя, прошедшего проверку подлинности.

Числовое значение равно 1.
UseWorkerProcessUser Указывает, что службы IIS будут предоставлять маркер для удостоверения рабочего процесса, а не использовать удостоверение пользователя, прошедшего проверку подлинности; Приложения, которые выполняются в этом контексте, будут ограничены любыми ограничениями доступа для удостоверения рабочего процесса.

Числовое значение равно 2.
Значение по умолчанию — UseAuthenticatedUser.
enabled Необязательный атрибут boolean .

Указывает, могут ли приложения на веб-сервере обслуживать содержимое (true) или не могут обслуживать содержимое (false).

Значение по умолчанию — true.
enableNagling Необязательный атрибут boolean .

Указывает, включена ли функция nagling (true) или отключена (false).

Значение по умолчанию — false.
frequentHitThreshold Необязательный атрибут uint.

Указывает количество запрашиваемых URL-адресов в пределах интервала времени, указанного в атрибуте frequentHitTimePeriod , который будет считаться часто встречаемым. Значение должно быть от 1 до 2147483647.

Значение по умолчанию — 2.
frequentHitTimePeriod Необязательный атрибут timeSpan.

Указывает интервал времени, в течение которого URL-адрес должен запрашиваться, количество раз, указанное в атрибуте frequentHitThreshold , прежде чем он считается часто встречаемым.

Значение по умолчанию — 00:00:10 (10 секунд).
maxRequestEntityAllowed Необязательный атрибут uint.

Указывает максимальное число байтов, которое может находиться в теле сущности запроса. Если в заголовке Content-Length указано большее число, iis отправляет ответ об ошибке HTTP 403.

Значение по умолчанию — 4294967295 (unlimited).
uploadReadAheadSize Необязательный атрибут uint.

Указывает количество байтов, которые веб-сервер считывает в буфер и передает в расширение или модуль ISAPI. Это происходит один раз для каждого запроса клиента. Расширение или модуль ISAPI получает любые дополнительные данные непосредственно от клиента. Значение должно находиться в диапазоне от 0 до 2147483647.

Значение по умолчанию — 49152.

Дочерние элементы

Отсутствует.

Образец конфигурации

В следующем примере конфигурации атрибуту enable элемента присваивается <serverRuntime>значение true, а затем настраивается число запросов для URL-адреса, который считается "часто встречаемым", задав атрибуту frequentHitThreshold значение 5 запросов, а атрибуту frequentHitTimePeriod — значение 20 секунд.

<location path="Default Web Site">
   <system.webServer>
      <serverRuntime enabled="true"
         frequentHitThreshold="5"
         frequentHitTimePeriod="00:00:20" />
   </system.webServer>
</location>

Пример кода

В следующих примерах кода атрибуту enable элемента присваивается <serverRuntime>значение true, а затем настраивается количество запросов для URL-адреса, который считается "часто встречаемым", задав атрибуту frequentHitThreshold значение 5 запросов, а атрибуту frequentHitTimePeriod — значение 20 секунд.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /enabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitThreshold:"5" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitTimePeriod:"00:00:20" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection serverRuntimeSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site");
         serverRuntimeSection["enabled"] = true;
         serverRuntimeSection["frequentHitThreshold"] = 5;
         serverRuntimeSection["frequentHitTimePeriod"] = TimeSpan.Parse("00:00:20");

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim serverRuntimeSection As ConfigurationSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site")
      serverRuntimeSection("enabled") = True
      serverRuntimeSection("frequentHitThreshold") = 5
      serverRuntimeSection("frequentHitTimePeriod") = TimeSpan.Parse("00:00:20")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
serverRuntimeSection.Properties.Item("enabled").Value = true;
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5;
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site")
serverRuntimeSection.Properties.Item("enabled").Value = True
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20"

adminManager.CommitChanges()