Elemento processModel (Esquema de configuración de ASP.NET)

[Esta documentación se proporciona solo para fines preliminares y está sujeta a cambios en versiones posteriores. Se incluye temas en blanco como marcadores].

Configura las opciones del modelo de procesamiento de ASP.NET en un servidor Web con los Microsoft Internet Information Services (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 ejecutan en el servidor.

Advertencia

Los cambios realizados en el elemento processModel no tendrán efecto hasta que se reinicie el proceso de trabajo, no inmediatamente después de cambiar el valor, como sucede con los demás elementos de configuración.Para obtener más información, vea "Comentarios" más adelante en este mismo tema.

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

Atributos y elementos

En las próximas secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo

Descripción

autoConfig

Especifica si se deben configurar automáticamente los valores siguientes para obtener un rendimiento óptimo en función de la configuración del equipo:

Los valores se establecen según lo dispuesto en el artículo de Knowledge Base que se encuentra en https://support.microsoft.com/?id=821268.

Este atributo no afecta a las aplicaciones cliente de .NET Framework, sólo a las de ASP.NET.

El atributo autoConfig puede tener uno de los valores siguientes:

TérminoDefinición
True Indica que ASP.NET configura automáticamente los atributos enumerados anteriormente para lograr un rendimiento óptimo según la configuración del equipo.
False Indica que ASP.NET debe utilizar los valores definidos explícitamente para los atributos enumerados anteriormente.

El valor predeterminado en el archivo Machine.config es True, a menos que exista una configuración anterior.

clientConnectedCheck

Especifica durante cuánto tiempo una solicitud debe permanecer en la cola hasta que ASP.NET realiza una comprobación para determinar si el cliente está conectado.

El valor predeterminado es "00:00:05" (5 segundos).

comAuthenticationLevel

Especifica el nivel de autenticación para la seguridad DCOM.

El atributo comAuthenticationLevel puede tener uno de los valores siguientes:

ValorDescripción
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.
Connect Especifica que DCOM debe autenticar las credenciales del cliente únicamente cuando éste establece una conexión con el servidor.
Default Especifica que DCOM determina el nivel de autenticación con su algoritmo de negociación de seguridad estándar.
None No especifica ninguna autenticación.
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 autentica y comprueba 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.

El valor predeterminado es Connect.

comImpersonationLevel

Especifica el nivel de autenticación para la seguridad COM.

El atributo comImpersonationLevel puede tener uno de los valores siguientes:

ValorDescripción
Anonymous Especifica que el cliente resulta anónimo para el servidor.El servidor puede suplantar al cliente, pero el símbolo (token) de suplantación no contendrá ninguna información.Anonymous no se admite en la versión 1.1 de .NET Framework.
Default Especifica que DCOM determina el nivel de suplantación mediante su algoritmo de negociación de seguridad estándar.
Delegate Especifica que el proceso del servidor puede suplantar el 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 suplantación se realiza en este nivel, el token utilizado para suplantar puede atravesar cualquier número de límites de equipos.
Identify Especifica que el servidor puede obtener la identidad del cliente.El servidor puede suplantar al cliente para comprobar la lista de control de acceso (ACL), pero no puede obtener acceso a los objetos del sistema en lugar del cliente.
Impersonate Especifica que el proceso del servidor puede suplantar el contexto de seguridad del cliente y actuar en su nombre.Este nivel de suplantación permite el acceso a recursos locales, como archivos.Cuando la suplantación se realiza en este nivel, el token utilizado para suplantar sólo puede atravesar el límite de un equipo.

El valor predeterminado es Impersonate.

cpuMask

Especifica qué procesadores (CPU) de un servidor multiprocesador están calificados para ejecutar procesos de ASP.NET. Este valor especifica un modelo de bits que indica las CPU calificadas para la ejecución de subprocesos de ASP.NET. Por ejemplo, el valor hexadecimal 0x0d de cpuMask 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 un proceso de trabajo para cada CPU calificada. Si el atributo webGarden es true, este atributo limita los procesos de trabajo al número de CPU calificadas. El número máximo de procesos de trabajo es igual al número de CPU. Si webGarden es false, este atributo se omite y sólo se ejecuta un proceso de trabajo. Éste es el comportamiento predeterminado.

El valor predeterminado es "0xffffffff".

enable

Especifica si el modelo de procesamiento está habilitado.

El atributo enable puede tener uno de los valores siguientes:

ValorDescripción
True Indica que el modelo de procesamiento está habilitado.
False Indica que el modelo de procesamiento no está habilitado.

De manera predeterminada, es true.

idleTimeout

Especifica, en una cadena con el formato horas:minutos:segundos, el período de inactividad transcurrido el cual ASP.NET finaliza el proceso de trabajo automáticamente.

El valor predeterminado es Infinite.

logLevel

Especifica los tipos de evento que se guardan en el registro de eventos.

El atributo logLevel puede tener uno de los valores siguientes:

ValorDescripción
All Especifica que deben registrarse todos los eventos del proceso.
Errors Especifica que sólo se deben registrar los cierres inesperados o los debidos a la limitación de la memoria o a interbloqueos.
None Especifica que no debe registrarse ningún evento.

El valor predeterminado es Errors.

maxAppDomains

Especifica el número máximo de dominios de aplicación que se permiten en un proceso.

Este atributo puede ser menor o igual que 2000.

El valor predeterminado es 2000.

maxIoThreads

Configura el número máximo de subprocesos de E/S que se pueden usar para el proceso en cada CPU. Por ejemplo, si este valor es 25 en un servidor con un solo procesador, ASP.NET utiliza las API en tiempo de ejecución para establecer el límite de proceso en 25. En un servidor con dos procesadores, el límite está establecido en 50. El valor de este atributo debe ser igual o mayor que el valor del atributo minFreeThread en la sección de configuración httpRuntime.

Para obtener información acerca de los tipos de subprocesos, vea "Threading Explained" en Improving ASP.NET Performance.

Los valores de este atributo están comprendidos en el intervalo de 5 a 100.

El valor predeterminado es 20.

maxWorkerThreads

Configura el número máximo de subprocesos de trabajo que se pueden usar para el proceso en cada CPU. Por ejemplo, si este valor es 25 en un servidor con un solo procesador, ASP.NET utiliza las API en tiempo de ejecución para establecer el límite de proceso en 25. En un servidor con dos procesadores, el límite está establecido en 50. El valor de este atributo debe ser igual o mayor que el valor del atributo minFreeThread en la sección de configuración httpRuntime.

Para obtener información acerca de los tipos de subprocesos, vea "Threading Explained" en Improving ASP.NET Performance.

Los valores de este atributo están comprendidos en el intervalo de 5 a 100.

El valor predeterminado es 20.

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 60.

minIoThreads

Configura el número mínimo de subprocesos de E/S que se pueden usar para el proceso en cada CPU. Vea también maxIoThreads.

Para obtener información acerca de los tipos de subprocesos, vea "Threading Explained" en Improving ASP.NET Performance.

El valor predeterminado es 1.

minWorkerThreads

Configura el número mínimo de subprocesos de trabajo que se pueden usar para el proceso en cada CPU. Vea también maxWorkerThreads.

Para obtener información acerca de los tipos de subprocesos, vea "Threading Explained" en Improving ASP.NET Performance.

El valor predeterminado es 1.

password

Si se especifica (y se acompaña de userName), este atributo hace que el proceso de trabajo se ejecute con la identidad de Microsoft Windows configurada. Para obtener más información sobre los nombres especiales System y Machine, que no requieren contraseña, y sobre el modo de almacenar credenciales de procesos de trabajo cifradas en el Registro, vea userName.

NoteNote
El almacenamiento de credenciales en un archivo de configuración presenta algunos riesgos relacionados con la seguridad.Para obtener más información, vea "Almacenar un nombre de usuario y una contraseña en el Registro" más adelante en este documento.

El valor predeterminado es AutoGenerate.

pingFrequency

Especifica el intervalo de tiempo, con el formato de modelo de proceso estándar (horas:minutos:segundos), en el que la extensión ISAPI ejecuta el comando ping para el proceso de trabajo a fin de determinar si se está ejecutando. Si no se está ejecutando durante el intervalo pingTimeout, el proceso de trabajo se reinicia.

El valor predeterminado es Infinite.

pingTimeout

Especifica el intervalo de tiempo, en formato de modelo de proceso estándar (horas:minutos:segundos), después del cual se reinicia un proceso de trabajo activo que no responde. Las extensiones ISAPI hacen ping en el proceso de trabajo en el intervalo de pingFrequency. Si el proceso de trabajo no responde en el intervalo de tiempo de pingTimeout, se reinicia.

El valor predeterminado es Infinite.

requestLimit

Especifica el número de solicitudes permitidas 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 permitidas en la cola antes de que ASP.NET comience a generar el mensaje de error 503 para las nuevas solicitudes, indicando que el servidor está muy ocupado.

El valor predeterminado es 5000.

responseDeadlockInterval

Especifica el intervalo de tiempo, en formato de modelo de proceso estándar (horas:minutos:segundos), 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 "0:03:00" (3 minutos).

responseRestartDeadlockInterval

Este atributo ya no se usa en ASP.NET y sólo se incluye por compatibilidad. Si ya está presente en un archivo de configuración, no se producirá ningún error de configuración. Ahora es el atributo responseDeadlockInterval el que controla todo el reciclado en el caso de que se produzca una condición de interbloqueo.

El valor predeterminado es "0:03:00" (3 minutos).

restartQueueLimit

Especifica el número máximo de solicitudes que se ponen en la cola mientras se espera a que el proceso de trabajo se reinicie después de una terminación anómala. Esta configuración no se aplica en el caso de un cierre normal o un reinicio estándar.

El valor predeterminado es 10.

serverErrorMessageFile

Especifica el contenido de un archivo que se utilizará en lugar del mensaje predeterminado "Servidor no disponible" en caso de un error irrecuperable. La ubicación de este archivo es relativa al archivo Machine.config, o puede ser una ruta de acceso absoluta. Si no se incluye este atributo, se usará el mensaje predeterminado, "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 expirado este plazo, ASP.NET cierra el proceso de trabajo. El tiempo se expresa con el formato de cadena hora:minutos:segundos.

El valor predeterminado es "0:00:05" (5 segundos).

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

Especifica que ASP.NET ejecutará el proceso de trabajo con una identidad de Windows que es diferente de la identidad de Windows que corresponde a la identidad de proceso predeterminada. De forma predeterminada, este atributo se establece en Machine y el proceso se ejecuta con 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 este atributo y el atributo password especifican credenciales válidas, el proceso se ejecuta con la cuenta correspondiente. Otro valor de userName es System, con la contraseña AutoGenerate, que ejecuta el proceso como una cuenta administrativa y permite que todo el código de usuario de ASP.NET que se ejecuta en el proceso tenga plenos privilegios administrativos. Para obtener información acerca del uso de ASP.NET en un servidor que sea un controlador de dominio, vea la sección "Comentarios", más adelante en este mismo tema.

NoteNote
Este atributo y el atributo password se almacenan en texto no cifrado en el archivo de configuración.Aunque Microsoft Internet Information Services (IIS) no transmite los archivos .config como respuesta a una solicitud de agente de usuario, los archivos de configuración se pueden leer por otros medios.Por ejemplo, un archivo de configuración puede ser leído por un usuario autenticado con las credenciales correctas en el dominio del servidor.Por motivos de seguridad, la sección processModel admite el almacenamiento de los atributos userName y password cifrados en el Registro.Las credenciales deben tener el formato REG_BINARY y deben estar cifradas con las funciones de cifrado de la API de protección de datos (DPAPI) de Windows 2000 y Windows XP.Para obtener más información, vea "Almacenar un nombre de usuario y una contraseña en el Registro" más adelante en este documento.

El valor predeterminado es "machine".

webGarden

Controla la afinidad de las CPU cuando se utiliza conjuntamente con el atributo cpuMask. (Un servidor Web multiprocesador se denomina jardín Web)

El atributo webGarden puede ser uno de los siguientes valores:

ValorDescripción
True Indica que el atributo cpuMask se utiliza para especificar las CPU calificadas para ejecutar los procesos de ASP.NET.
False Indica que es el sistema operativo Windows el que programa el uso de las CPU.Se omitirá el atributo cpuMask y sólo se ejecutará un proceso de trabajo.

El valor predeterminado es False.

Elementos secundarios

Ninguno.

Elementos primarios

Elemento

Descripción

system.web

Especifica el elemento raíz de la sección de configuración ASP.NET y contiene elementos de configuración que configuran las aplicaciones Web ASP.NET y controlan el comportamiento de las aplicaciones.

Comentarios

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

Cuando ASP.NET se ejecuta con IIS versión 6 en modo nativo, se utiliza el modelo de proceso de IIS 6 y no se tienen en cuenta algunos atributos de la sección processModel . No obstante, se siguen aplicando los siguientes atributos:

  • autoConfig

  • maxIoThreads

  • maxWorkerThreads

  • minIoThreads

  • minWorkerThreads

  • requestQueueLimit

  • responseDeadlockInterval

Para obtener información sobre el modelo de procesamiento de IIS 7, vea Process Model Settings for an Application Pool.

Para configurar la identidad del proceso, los ciclos u otros valores del modelo de proceso en IIS 6.0, 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.

Nota

No se puede utilizar ASP.NET 2.0 al configurar IIS 6 para ejecutar ASP.NET en modo de aislamiento de IIS 5.0.

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

Si una aplicación ASP.NET hace que el proceso de trabajo de ASP.NET (aspnet_wp.exe en Windows 2000 y Windows XP Professional o w3wp.exe en Windows Server 2003) se reinicie y presente un mensaje de error que indica que este reinicio se debe a un posible estado de interbloqueo, se debería aumentar el valor del atributo responseDeadlockInterval.

Controladores de dominio y la cuenta ASPNET local

Si se instala .NET Framework 1.1 en un controlador de dominio, la instalación no creará la cuenta ASPNET local. En su lugar, las aplicaciones ASP.NET se ejecutan con otras identidades, tal como se indica a continuación.

  • En los controladores de dominio que ejecutan Windows 2000 Server, las aplicaciones ASP.NET se ejecutan con la identidad IWAM_nombreDeEquipo.

  • En los controladores de dominio que ejecutan Windows Server 2003, las aplicaciones ASP.NET se ejecutan con la identidad NETWORK SERVICE, independientemente del modo de aislamiento de IIS.

En determinadas circunstancias, para ejecutar ASP.NET en un controlador de dominio se requieren algunos pasos adicionales con el fin de que la instalación funcione correctamente. Para obtener más información sobre cómo ejecutar .NET Framework 1.1 en un controlador de dominio, vaya a la página de búsqueda de Knowledge Base (KB) y vea el artículo Q824308, "IWAM Account is Not Granted the Impersonate Privilege for ASP.NET 1.1 on Windows 2000 Domain Controller with SP4". Para obtener más información sobre cómo ejecutar .NET Framework 1.0 en un controlador de dominio, vaya a la página de búsqueda de Knowledge Base (KB) y vea el artículo Q315158, "ASP.NET Does Not Work with the Default ASPNET Account on a Domain Controller".

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

Para cifrar el nombre de usuario y la contraseña y almacenarlos en el Registro, establezca los atributos userName y password tal como se muestra en el ejemplo 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 ASP.NET abre. La parte situada detrás de la coma (,) contiene un nombre de valor de cadena único en el que ASP.NET lee 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 seguirá la ruta de acceso al código de error de creación de la cuenta actual.

Las credenciales deben tener el formato REG_BINARY, que contiene el resultado de una llamada a la función CryptProtectData de la API de Windows. Puede utilizar Aspnet_setreg.exe para crear las credenciales cifradas y almacenarlas en el Registro. Aspnet_setreg.exe utiliza CryptProtectData para realizar el cifrado. Para descargar Aspnet_setreg.exe, junto con el código fuente y la documentación de Microsoft Visual C++, vaya al sitio Web de ASP.NET y busque "aspnet_setreg".

Se recomienda configurar el acceso a la clave que almacena las credenciales cifradas de modo que sólo se conceda acceso a Administrators y a SYSTEM. Dado que la clave será leída por el proceso de ASP.NET que se ejecuta como SYSTEM, establezca los siguientes permisos:

Administrators:F
SYSTEM:F
CREATOR OWNER:F 
ProcessAccount: R

Los datos quedarán protegidos de la manera siguiente:

  • Los permisos ACL requieren que la identidad que tiene acceso a los datos sea Administrator.

  • Un agresor debe ejecutar código en el servidor (CryptUnprotectData) para recuperar las credenciales de la cuenta.

Configuración predeterminada

El siguiente elemento processModel predeterminado no se configura explícitamente en el archivo Machine.config o en el archivo Web.config raíz. Sin embargo, es la configuración predeterminada que devuelve la aplicación.

<processModel 
   enable="true" 
   timeout="Infinite" 
   idleTimeout="Infinite" 
   shutdownTimeout="00:00:05" 
   requestLimit="Infinite" 
   requestQueueLimit="5000" 
   restartQueueLimit="10" 
   memoryLimit="60" 
   webGarden="false" 
   cpuMask="0xffffffff" 
   userName="machine" 
   password="AutoGenerate" 
   logLevel="Errors" 
   clientConnectedCheck="00:00:05" 
   comAuthenticationLevel="Connect" 
   comImpersonationLevel="Impersonate" 
   responseDeadlockInterval="00:03:00" 
   responseRestartDeadlockInterval="00:03:00" 
   autoConfig="true" 
   maxWorkerThreads="20" 
   maxIoThreads="20" 
   minWorkerThreads="1" 
   minIoThreads="1" 
   serverErrorMessageFile="" 
   pingFrequency="Infinite" 
   pingTimeout="Infinite" 
   asyncOption="20" 
   maxAppDomains="2000" 
/>

En la versión 1.0 y 1.1 de .NET Framework, el siguiente elemento processModel predeterminado se configura en el archivo Machine.config.

<processModel
   enable="true"
   timeout="Infinite"
   idleTimeout="Infinite"
   shutdownTimeout="0:00:05" 
   requestLimit="Infinite" 
   requestQueueLimit="5000" 
   restartQueueLimit="10"
   memoryLimit="60" 
   webGarden="false"
   cpuMask="0xffffffff"
   userName="machine"
   password="AutoGenerate"
   logLevel="Errors"
   clientConnectedCheck="0:00:05"
   comAuthenticationLevel="Connect"
   comImpersonationLevel="Impersonate"
   responseRestartDeadlockInterval="00:09:00"
   responseDeadlockInterval="00:03:00" 
   <!-- In the .NET Framework version 1.1, the next two attributes are
        set to 20. -->
   maxWorkerThreads="25"
   maxIoThreads="25"
        />

Información de elemento

Controlador de la sección de configuración

ProcessModelSection

Miembro de configuración

ProcessModel

Ubicaciones configurables

Machine.config

Requisitos

Microsoft Internet Information Services (IIS) versión 5.0, 5.1 ó 6.0

.NET Framework 1.0, 1.1 ó 2.0

Microsoft Visual Studio 2003 o Visual Studio 2005

Vea también

Tareas

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

Referencia

Elemento system.web (Esquema de configuración de ASP.NET)

Elemento configuration (Esquema de configuración general)

System.Configuration

System.Web.Configuration

ProcessModel

ProcessModelSection

Conceptos

Configuring ASP.NET Process Identity

ASP.NET Configuration File Hierarchy

Securing Configuration

Configuration Inheritance

Otros recursos

Opciones de configuración generales (ASP.NET)

Explained: Forms Authentication in ASP.NET 2.0

Opciones de configuración de ASP.NET

Configuring ASP.NET Applications

ASP.NET Configuration Files

ASP.NET Configuration API