Compartir a través de


Elemento <processModel>

Configura las opciones del modelo de procesamiento de ASP.NET en un servidor Web con los Servicios de Microsoft Internet Information Server (IIS). La sección <processModel> sólo se puede establecer en el archivo Machine.config, y afecta a todas las aplicaciones ASP.NET que se ejecuten en el servidor.

Precaución   ****Lea la sección Comentarios correspondiente a este elemento.

<configuration>
   <system.web>
      <processModel>

<processModelenable="true|false"              timeout="hrs:mins:secs|Infinite"               idleTimeout="hrs:mins:secs|Infinite"              shutdownTimeout="hrs:mins:secs|Infinite"              requestLimit="hrs:mins:secs|Infinite"              requestQueueLimit="num|Infinite"              restartQueueLimit="num|Infinite"              memoryLimit="percent"              cpuMask="num"              webGarden="true|false"              userName="username"              password="password"              logLevel="All|None|Errors"              clientConnectedCheck="hrs:mins:secs|Infinite"              responseDeadlockInterval="hrs:mins:secs|Infinite"              responseRestartDeadlockInterval="hrs:mins:secs|Infinite"              comAuthenticationLevel="Default|None|Connect|Call|                                       Pkt|PktIntegrity|PktPrivacy"              comImpersonationLevel="Default|Anonymous|Identify|                                     Impersonate|Delegate"              maxWorkerThreads="num"              maxIoThreads="num"/>

Atributos opcionales

Atributo Opción Descripción
clientConnectedCheck     Especifica cuánto tiempo se deja una solicitud en la cola antes de que ASP.NET realice una comprobación de los clientes conectados.
comAuthenticationLevel     Especifica el nivel de autenticación de la seguridad DCOM. El valor predeterminado es Connect.
    Default Especifica que DCOM debe determinar el nivel de autenticación con su algoritmo de negociación de seguridad habitual.
    None No especifica ninguna autenticación.
    Connect Especifica que DCOM debe autenticar las credenciales del cliente únicamente cuando éste establece una relación con el servidor.
    Call Especifica que DCOM debe autenticar las credenciales del cliente cada vez que el servidor reciba la solicitud correspondiente al comienzo de cada llamada a procedimiento remoto.
    Pkt Especifica que DCOM debe autenticar que todos los datos recibidos provienen del cliente esperado. Los transportes de datagramas utilizan siempre la autenticación Pkt.
    PktIntegrity Especifica que DCOM debe autenticar y comprobar que los datos transferidos entre el cliente y el servidor no han sido modificados.
    PktPrivacy Especifica que DCOM debe autenticar todos los niveles anteriores y además cifrar el valor del argumento de cada llamada a procedimiento remoto.
comImpersonationLevel     Especifica el nivel de autenticación de la seguridad COM.
    Default Especifica que DCOM debe determinar el nivel de representación con su algoritmo de negociación de seguridad habitual.
    Anonymous Especifica que el cliente es anónimo para el servidor. El servidor puede suplantar al cliente, pero el símbolo de suplantación no contendrá ninguna información. La opción Anonymous no está disponible en la versión 1.1.
    Identify Especifica que el servidor puede obtener la identidad del cliente. El servidor puede suplantar al cliente para comprobar la ACL (Access Control List, Lista de control de acceso), pero no puede obtener acceso a los objetos del sistema en lugar del cliente.
    Impersonate Especifica que el proceso del servidor puede representar al contexto de seguridad del cliente y actuar en su nombre. Este nivel de representación permite el acceso a recursos locales, por ejemplo a archivos. Cuando la representación se realiza en este nivel, el elemento de suplantación sólo puede atravesar el límite de un equipo.
    Delegate Especifica que el proceso del servidor puede representar al contexto de seguridad del cliente y actuar en su nombre. El proceso del servidor también puede efectuar llamadas salientes a otros servidores en nombre del cliente, mediante cloaking. El servidor puede utilizar el contexto de seguridad del cliente en otros equipos para tener acceso a recursos locales y remotos como lo haría el cliente. Cuando la representación se realiza en este nivel, el elemento de suplantación puede atravesar cualquier número de límites de equipos.
cpuMask     Especifica qué procesadores de un servidor multiprocesador pueden utilizarse para ejecutar los procesos de ASP.NET. El valor cpuMask contiene un modelo de bits que indica las CPU que pueden emplearse para ejecutar los subprocesos de ASP.NET. Por ejemplo, el valor hexadecimal de cpuMask, 0x0d representa el modelo de bits 1101. En un equipo con cuatro CPU, esto indica que los procesos de ASP.NET se pueden programar en las CPU 0, 2 y 3, pero no en la CPU 1. ASP.NET inicia una proceso de trabajo para cada CPU permitida. Si el atributo webGarden (explicado más adelante) tiene el valor true, cpuMask limita el número de procesos de trabajo al número de CPU permitidas. El número máximo de procesos de trabajo permitidos es igual al número de CPU. De forma predeterminada pueden usarse todas las CPU y ASP.NET inicia un proceso en cada una de ellas. Si se establece webGarden en false, el atributo cpuMask se ignora y sólo se ejecutará un proceso de trabajo.
enable     Especifica si el modelo de procesamiento está habilitado.
    true Indica que el modelo de procesamiento está habilitado.
    false Indica que el modelo de procesamiento no está habilitado.
idleTimeout     Especifica, en una cadena con el formato hr:min:seg, el período de inactividad transcurrido el cual ASP.NET finaliza el proceso de trabajo. El valor predeterminado es Infinite.
logLevel     Especifica los tipos de eventos que se registran en el registro de eventos.
    All Especifica que se deben registrar todos los eventos del proceso.
    None Especifica que no se debe registrar ningún evento.
    Errors Especifica que sólo se deben registrar los cierres inesperados, debidos a la limitación de la memoria o a interbloqueos. El valor predeterminado es Errors.
maxWorkerThreads 5 a 100 Configura el número máximo de subprocesos de trabajo que se pueden usar en el proceso en cada CPU. Por ejemplo, si este valor es 25 para un servidor con un único procesador, ASP.NET usa las API de tiempo de ejecución para establecer el límite del proceso en 25. En un servidor con dos procesadores, el límite se establecerá en 50. El valor predeterminado es 20. El valor de maxWorkerThreads debe ser mayor o igual que el del atributo minFreeThread de la sección de configuración <httpRuntime>.
maxIoThreads 5 a 100 Configura el número máximo de subprocesos E/S que se pueden usar en el proceso en cada CPU. Por ejemplo, si este valor es 25 para un servidor con un único procesador, ASP.NET usa las API de tiempo de ejecución para establecer el límite del proceso en 25. En un servidor con dos procesadores, el límite se establecerá en 50. El valor predeterminado es 20. El valor de maxIoThreads debe ser mayor o igual que el del atributo minFreeThread de la sección de configuración <httpRuntime>.
memoryLimit     Especifica, como porcentaje de la memoria total del sistema, el espacio de memoria máximo que el proceso de trabajo puede consumir antes de que ASP.NET inicie un nuevo proceso y reasigne las solicitudes pendientes. El valor predeterminado es el 60 por ciento.
password     Si se especifica (y conjuntamente con userName), este atributo hace que el proceso de trabajo se ejecute con la identidad de Windows configurada. El valor predeterminado es AutoGenerate. Para obtener más información acerca de los nombres especiales System y Machine, que no requieren contraseña, y sobre el modo de almacenar credenciales de procesos de trabajo codificadas en el registro vea el apartado de userName.
pingFrequency     Especifica el intervalo de tiempo (con el formato de modelo de procesamiento estándar hr:min:seg) con el que la extensión ISAPI ejecuta ping sobre el proceso de trabajo para determinar si está ejecutándose. Si no se está ejecutando durante el intervalo pingTimeout, el proceso de trabajo se reinicia. El valor predeterminado es 30 segundos.
pingTimeout     Especifica el intervalo de tiempo (con el formato de modelo de procesamiento estándar hr:min:seg) transcurrido el cual se reinician los procesos de trabajo que no respondan. Las extensiones ISAPI ejecutan periódicamente ping sobre el proceso de trabajo con el intervalo establecido en pingFrequency. Si no responde en el intervalo indicado por pingTimeout, el proceso de trabajo se reinicia. El valor predeterminado es 5 segundos.
requestLimit     Especifica el número de solicitudes admitidas antes de que ASP.NET inicie automáticamente un nuevo proceso de trabajo que sustituya al actual. El valor predeterminado es Infinite.
requestQueueLimit     Especifica el número de solicitudes admitidas en la cola antes de que ASP.NET comience a generar el mensaje de error "503 – Server Too Busy" (servidor ocupado) para las nuevas solicitudes. El valor predeterminado es 5000.
responseDeadlockInterval     Especifica el intervalo de tiempo (con el formato de modelo de procesamiento estándar hr:min:seg) transcurrido el cual se reiniciará el proceso si se dan las siguientes condiciones:
  • Hay solicitudes en la cola.
  • No ha habido ninguna respuesta durante este intervalo.

El valor predeterminado es 3 minutos.

responseRestartDeadlockInterval     Este atributo ya no se usa en ASP.NET y sólo se incluye para proporcionar compatibilidad con versiones anteriores. Si ya está presente en un archivo de configuración, no producirá un error. Ahora es el atributo responseDeadlockInterval el que controla todo el reciclado en el caso de que se produzca una condición de bloqueo.
serverErrorMessageFile     Cuando se incluye, este atributo especifica un archivo cuyo contenido se utilizará en lugar del mensaje "Server Unavailable" (servidor no disponible) en caso de un error grave. La ubicación del archivo es relativa al archivo Machine.config o también puede ser una ruta de acceso absoluta. Si este atributo no se incluye, se usará el mensaje predeterminado "Server Unavailable" (servidor no disponible).
shutdownTimeout     Especifica el número de minutos que se conceden al proceso de trabajo para que se cierre por sí mismo. Una vez transcurrido este plazo, ASP.NET cierra el proceso de trabajo. El tiempo se expresa con el formato de cadena hr:min:seg. El valor predeterminado es 5 segundos, o 0:00:05.
timeout     Especifica el número de minutos que debe transcurrir para que ASP.NET inicie un nuevo proceso de trabajo que sustituya al actual. El valor predeterminado es Infinite.
userName     Si se incluye, el atributo userName ejecuta el proceso de trabajo de ASP.NET con una identidad de Windows diferente de la del proceso predeterminado. De forma predeterminada, userName se establece en el valor especial Machine, y el proceso se ejecuta mediante una cuenta de usuario denominada ASPNET que se crea automáticamente cuando se instala ASP.NET. La contraseña de la cuenta ASPNET se genera criptográficamente en el momento de la instalación. Si los atributos userName y password especifican unas credenciales válidas, el proceso se ejecutará con la cuenta correspondiente. Otro valor especial para userName es System, con la contraseña AutoGenerate, que ejecuta el proceso como si se tratara de una cuenta administrativa y permite a todo el código de usuario ASP.NET que se ejecute en dicho proceso que tenga privilegios administrativos completos. Para obtener más información sobre el uso de ASP.NET en un servidor que sea un controlador de dominio, vea la sección Comentarios siguiente.

userName y password se almacenan en texto no cifrado en el archivo de configuración. Aunque IIS no transmitirá archivos .config en respuesta a la solicitud de un agente de usuario, los archivos de configuración se pueden leer de otros modos, por ejemplo, por un usuario autenticado con credenciales apropiadas en el dominio que contiene el servidor. Para aumentar la seguridad, la sección processModel admite el almacenamiento de atributos userName y password codificados en el registro. Las credenciales deben estar en el formato REG_BINARY cifradas mediante las funciones de codificación de la API de protección de datos (DPAPI, Data Protection API) de Windows 2000 y Windows XP. Para obtener más información, vea las secciones Comentarios y Ejemplo siguientes.

webGarden     Controla la afinidad de las CPU cuando se utiliza conjuntamente con el atributo cpuMask. (Un servidor Web multiprocesador se denomina jardín Web)
    true Indica que debe usarse el atributo cpuMask para especificar las CPU en las que pueden ejecutarse los procesos de ASP.NET.
    false Indica que es el sistema operativo Windows el que programa el uso de las CPU. El atributo cpuMask se ignora y sólo se ejecutará un proceso de trabajo. El valor predeterminado es false.

Comentarios

El sistema de configuración de código administrado no lee las opciones de configuración de <processModel>. Es la biblioteca DLL no administrada aspnet_isapi.dll la que las lee directamente. Los cambios en esta sección no se aplican hasta que se reinicia IIS.

Si se instala ASP.NET en un controlador de dominios, se deberá seguir una serie de pasos especiales para que el proceso se lleve a cabo correctamente. Para obtener más información, vea el artículo Q315158, "ASP.NET Does Not Work with the Default ASPNET Account on a Domain Controller", en Microsoft Knowledge Base en https://support.microsoft.com.

Cuando ASP.NET se ejecuta con IIS versión 6 en modo nativo, se utiliza el modelo de procesamiento de IIS 6 y no se tiene en cuenta la configuración de la sección <processModel>. Para configurar la identidad del proceso, los ciclos u otros valores del modelo de procesamiento, utilice la interfaz de usuario del Administrador de servicios Internet con el fin de configurar el proceso de trabajo de IIS de la aplicación.

Los valores de tiempo siguen el formato "horas:minutos:segundos". Si se proporciona un único número sin los dos puntos (:), se da por supuesto que son minutos; por lo tanto, timeout="4" equivale a timeout="00:04:00".

Si una aplicación ASP.NET hace que el proceso de trabajo ASP.NET (aspnet_wp.exe en Windows 2000 y Windows XP Professional, w3wp.exe en Windows Server 2003) se reinicie y presente un mensaje de error indicando que dicho reinicio se debió a la posibilidad de un estado de bloqueo, se debería aumentar el valor de responseDeadlockInterval.

Almacenar un nombre de usuario y una contraseña en el registro

Para codificar el nombre de usuario y la contraseña, y almacenarlos en el registro, establezca userName y password del modo siguiente.

   userName="registry:HKLM\Software\AspNetProcess,Name"
   password="registry:HKLM\Software\AspNetProcess,Pwd"

La parte de la cadena situada entre la palabra clave registry y la coma indica el nombre de la clave del registro que abre ASP.NET. La parte situada tras la coma contiene un nombre de valor de cadena único del que ASP.NET leerá las credenciales. La coma es imprescindible, y las credenciales deben estar almacenadas en el subárbol HKLM. Si el formato de configuración no es correcto, ASP.NET no iniciará el proceso de trabajo y se seguirá la ruta de acceso al código de error de creación de cuenta.

Las credenciales deben estar en formato REG_BINARY e incluir el resultado de una llamada a la función de la API de Windows CryptProtectData. Para crear las credenciales codificadas y almacenarlas en el registro se puede utilizar la aplicación de consola Establecer registro de ASP.NET (Aspnet_setreg.exe), que usa CryptProtectData para realizar el cifrado. Para descargar Aspnet_setreg.exe, junto con el código fuente y la documentación de Visual C++, visite el sitio Web www.asp.net y busque "aspnet_setreg".

Para configurar el acceso a la clave, almacene las credenciales cifradas de modo que se conceda acceso únicamente a los administradores (Administrators) y al SISTEMA (SYSTEM). Dado que la clave la leerá el proceso de ASP.NET que se ejecuta como SISTEMA (SYSTEM), establezca los siguientes permisos:

Administrators:F

SYSTEM:F

CREATOR OWNER:F

ProcessAccount:R

Esto proporciona dos líneas de defensa para proteger los datos:

  • Los permisos ACL requieren que la identidad que tiene acceso a los datos sea un administrador.
  • Un atacante deberá ejecutar código en el servidor (CryptUnprotectData) para recuperar las credenciales de la cuenta.

Ejemplos

En el ejemplo siguiente se especifican diversas opciones de configuración de <processModel>.

<configuration>
   <system.web>
      <processModel
         enable="true"
         timeout="15" 
         idleTimeout="25"
         shutdownTimeout="5"
         requestLimit="1000"
         requestQueueLimit="500"
         responseDeadlockInterval="00:03:00"              
         responseRestartDeadlockInterval="Infinite"
         memoryLimit="20"
         webGarden="true"
         maxWorkerThreads="25"
         maxIoThreads="25"/>
   </system.web>
</configuration>

El ejemplo siguiente especifica que el nombre de usuario y la contraseña codificados se almacenan en el registro, en la clave definida por el usuario AspNetProcess.

<configuration>
   <system.web>
      <processModel>
         userName="registry:HKLM\Software\AspNetProcess,Name"
         password="registry:HKLM\Software\AspNetProcess,Pwd"
      </processModel>
   </system.web>
</configuration>

Requisitos

Contenido dentro de: <system.web>

Plataforma Web: IIS 5.0, IIS 5.1, IIS 6.0

Archivo de configuración: Machine.config

Controlador de la sección de configuración: System.Web.Configuration.ProcessModelConfigurationHandler

Vea también

Configuración de ASP.NET | Esquema de configuración de ASP.NET