Runtime de servidor <serverRuntime>

Información general

El elemento <serverRuntime> configura las siguientes opciones relacionadas con el entorno de ejecución del servidor de Internet Information Services (IIS) 7:

  • Si se establece el atributo habilitadoen true, IIS 7 configurará IIS 7 para proporcionar contenido en la dirección URL donde está configurado el elemento <serverRuntime>; si se establece el atributo habilitado en false, se configurará IIS 7 para que no sirva contenido para esa dirección URL.

  • El atributo alternateHostName especifica un nombre de host diferente del nombre de equipo en el encabezado HTTP Content-location.

  • El atributo appConcurrentRequestLimit especifica el número máximo de solicitudes simultáneas que se pueden poner en cola para una aplicación.

  • El atributo enableNagling habilita o deshabilita el algoritmo de Nagle, que es una optimización para HTTP a través de TCP que aumenta la eficacia intentando minimizar el número de paquetes necesarios antes de enviar los datos. Funciona esperando a enviar un paquete hasta que su área de datos esté llena, hasta que expire un período de tiempo de espera de 200 milisegundos, o hasta que el remitente indique que ha terminado de enviar datos. Las versiones 5.1 y anteriores de IIS usan el algoritmo de Nagle para todos los datos enviados al cliente.

    Nota:

    El algoritmo de Nagle tiene una posible desventaja: si una extensión no rellena el paquete, todavía hay un retraso de 200 milisegundos antes de enviar la respuesta. Este comportamiento se ve con más frecuencia cuando se usan extensiones ISAPI que admiten un encabezado keep-alive HTTP en la respuesta al cliente. En este caso, IIS no cierra la conexión después de la respuesta, por lo que el paquete final termina esperando 200 milisegundos.

  • IIS 7 comprueba el estado de dos atributos para determinar el nivel de tráfico de una dirección URL determinada. El atributo frequentHitThreshold configura el número de solicitudes y el atributo frequentHitTimePeriod configura la cantidad de tiempo permitida antes de que se juzgue que la dirección URL se alcance con frecuencia. Esta información se usa al escribir módulos HTTP que usan esta información para su procesamiento. Para obtener más información, vea el artículo Método IHttpUrlInfo::IsFrequentlyHit.

  • Los atributos maxRequestEntityAllowed y uploadReadAheadSize, respectivamente, configuran límites para el número máximo de bytes permitidos en el cuerpo de la entidad de una solicitud y el número de bytes que leerá un servidor web en un búfer y pasará a una extensión ISAPI. Se debe tener en cuenta que aumentar estos valores permite al usuario final cargar más contenido, lo que puede afectar a los recursos de memoria en tiempo de ejecución de IIS. Se recomienda mantener estos valores en un número coherente con las necesidades de la aplicación y solo en circunstancias extremas use el valor máximo.

Novedades de IIS 7.5

IIS 7.5 agregó el atributo authenticatedUserOverride al elemento <serverRuntime>, que configura si el entorno de ejecución del servidor IIS 7 proporcionará la identidad del usuario autenticado o la identidad del proceso de trabajo en los métodos IHttpUser::GetPrimaryToken e IHttpUser::GetImpersonationToken. Este atributo se puede establecer en UseAuthenticatedUser o UseWorkerProcessUser, y estos valores especifican respectivamente si el entorno de ejecución del servidor IIS 7 proporcionará la identidad del usuario autenticado o la identidad del proceso de trabajo para cualquier módulo que use la suplantación.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <serverRuntime> no se modificó en IIS 10.0.
IIS 8.5 El elemento <serverRuntime> no se modificó en IIS 8.5.
IIS 8.0 El elemento <serverRuntime> no se modificó en IIS 8.0.
IIS 7.5 El atributo authenticatedUserOverride se agregó en IIS 7.5.
IIS 7.0 El elemento <serverRuntime> se introdujo en IIS 7.0.
IIS 6,0 El elemento <serverRuntime> reemplaza las siguientes propiedades de metabase de IIS 6.0:
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

Configuración

El elemento <serverRuntime> se incluye en la instalación predeterminada de IIS 7.

Procedimientos

No hay ninguna interfaz de usuario que le permita configurar el <serverRuntime> elemento para IIS 7. Para obtener ejemplos de cómo configurar el elemento <serverRuntime> mediante programación, vea la sección Ejemplos de código de este documento.

Configuración

Atributos

Atributo Descripción
alternateHostName Atributo de cadena opcional.

Especifica el nombre de host que se va a usar para el redireccionamiento.
appConcurrentRequestLimit Atributo uint opcional.

Especifica el número máximo de solicitudes que se pueden poner en cola para una aplicación.

El valor predeterminado es 5000.
authenticatedUserOverride Atributo enum opcional.

Especifica si el entorno de ejecución del servidor IIS 7 proporcionará la identidad del usuario autenticado o la identidad del proceso de trabajo para los módulos que usan la suplantación.

Nota: Este atributo se ha agregado en IIS 7.5.
Valor Descripción
UseAuthenticatedUser Especifica que IIS proporcionará el token del usuario autenticado; Las aplicaciones que se ejecutan en este contexto se limitarán a las restricciones de acceso para la identidad del usuario autenticado.

El valor numérico es 1.
UseWorkerProcessUser Especifica que IIS proporcionará el token para la identidad del proceso de trabajo en lugar de usar la identidad del usuario autenticado. Las aplicaciones que se ejecutan en este contexto se limitarán a las restricciones de acceso para la identidad del proceso de trabajo.

El valor numérico es 2.
El valor predeterminado es UseAuthenticatedUser.
enabled Atributo Boolean opcional.

Especifica si las aplicaciones del servidor web pueden servir contenido (true) o no (false).

El valor predeterminado es true.
enableNagling Atributo Boolean opcional.

Especifica si el algoritmo de Nagle está habilitado (true) o deshabilitado (false).

El valor predeterminado es false.
frequentHitThreshold Atributo uint opcional.

Especifica el número de veces que se debe solicitar una dirección URL, dentro del intervalo de tiempo especificado en el atributo frequentHitTimePeriod, que se debe considerar frecuentemente alcanzado. El valor debe estar entre 1 y 2147483647.

El valor predeterminado es 2.
frequentHitTimePeriod Atributo timeSpan opcional.

Especifica el intervalo de tiempo en el que se debe solicitar una dirección URL el número de veces especificadas en el atributo frequentHitThreshold antes de que se considere que se alcanza con frecuencia.

El valor predeterminado es 00:00:10 (10 segundos).
maxRequestEntityAllowed Atributo uint opcional.

Especifica el número máximo de bytes que pueden estar en un cuerpo de entidad de una solicitud. Si el encabezado Content-Length especifica un número mayor, IIS envía una respuesta de error HTTP 403.

El valor predeterminado es 4294967295 (ilimitado).
uploadReadAheadSize Atributo uint opcional.

Especifica el número de bytes que un servidor web leerá en un búfer y pasará a una extensión o módulo ISAPI. Esto ocurre una vez por solicitud de cliente. La extensión o el módulo ISAPI recibe datos adicionales directamente del cliente. El valor debe estar entre 0 y 2147483647.

El valor predeterminado es 49152.

Elementos secundarios

Ninguno.

Ejemplo de configuración

En el ejemplo de configuración siguiente se establece el atributo enable del <serverRuntime>elemento en true y, a continuación, se configura el número de solicitudes de una dirección URL que se considerarán "aciertos con frecuencia" estableciendo el atributo frequentHitThreshold en 5 solicitudes y el atributo frequentHitTimePeriod en 20 segundos.

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

Código de ejemplo

En los ejemplos de código siguientes se establece la del elemento <serverRuntime>habilitar atributo para truey, a continuación, configurar el número de solicitudes de una dirección URL que se considerarán "aciertos con frecuencia" estableciendo el atributo frequentHitThreshold en 5 solicitudes y el atributo frequentHitTimePeriod en 20 segundos.

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

Nota:

Debe asegurarse de establecer el parámetro de confirmación en apphost cuando use AppCmd.exe para configurar estas opciones. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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()