Servidor en tiempo de <ejecución del servidorRuntime>

Información general

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

  • Si se establece el atributo habilitado en true , IIS 7 configurará IIS 7 para proporcionar contenido en la dirección URL donde está configurado el elemento; si se establece el <serverRuntime> 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 nagling, 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 nagling para todos los datos enviados al cliente.

    Nota

    Nagling 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 HTTP keep-alive 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 permitido 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. Debe tenerse 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 <serverRuntime> elemento , 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 <serverRuntime> elemento no se modificó en IIS 10.0.
IIS 8,5 El <serverRuntime> elemento no se modificó en IIS 8.5.
IIS 8,0 El <serverRuntime> elemento no se modificó en IIS 8.0.
IIS 7,5 El atributo authenticatedUserOverride se agregó en IIS 7.5.
IIS 7.0 El <serverRuntime> elemento se introdujo en IIS 7.0.
IIS 6,0 El <serverRuntime> elemento reemplaza las siguientes propiedades de metabase de IIS 6.0:
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

Configurar

El <serverRuntime> elemento 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 <serverRuntime> elemento 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 de enumeración 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 agregó 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 booleano opcional.

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

El valor predeterminado es true.
enableNagling Atributo booleano opcional.

Especifica si nagling 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 comprendido 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 se produce una vez por solicitud de cliente. La extensión o el módulo ISAPI recibe datos adicionales directamente del cliente. El valor debe estar comprendido 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 <serverRuntime> atributo enable del elemento en true y, a continuación, se configura el número de solicitudes de una dirección URL para que se considere "frecuentemente alcanzado" 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

Los ejemplos de código siguientes establecen el <serverRuntime> atributo enable del elemento en true y, a continuación, configuran 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 apphostcommit en 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()