Grupos de aplicaciones <applicationPools>
Información general
El elemento <applicationPools>
contiene opciones de configuración para todos los grupos de aplicaciones que se ejecutan en Internet Information Services (IIS) 7 o una versión posterior. Un grupo de aplicaciones define un grupo de uno o varios procesos de trabajo, configurados con valores comunes que atienden solicitudes a una o varias aplicaciones asignadas a ese grupo de aplicaciones. Dado que los grupos de aplicaciones permiten a un conjunto de aplicaciones web compartir uno o varios procesos de trabajo configurados de forma similar, proporcionan una manera cómoda de aislar un conjunto de aplicaciones web de otras aplicaciones web en el equipo servidor. Los límites del proceso separan cada proceso de trabajo; por lo tanto, los problemas de aplicación de un grupo de aplicaciones no afectan a los sitios web ni a las aplicaciones de otros grupos de aplicaciones. Los grupos de aplicaciones aumentan significativamente la confiabilidad y la capacidad de administración de la infraestructura web.
Puede optar por usar el grupo de aplicaciones predeterminado proporcionado por IIS en la instalación o puede crear su propio grupo de aplicaciones. Puede ejecutar tantos grupos de aplicaciones en el servidor IIS 7 como sea necesario, aunque esto puede afectar al rendimiento del servidor. Los grupos de aplicaciones pueden contener uno o varios procesos de trabajo. Cada proceso de trabajo representa el trabajo que se realiza para un sitio web, una aplicación web o un servicio web. Para crear un jardín web, habilite varios procesos de trabajo para que se ejecuten en un único grupo de aplicaciones.
En IIS 7 y versiones posteriores, cada grupo de aplicaciones usa uno de los dos modos de integración de .NET para ejecutar aplicaciones ASP.NET: Integrado o Clásico. El modo de integración de .NET definido para el grupo de aplicaciones determina cómo IIS procesa una solicitud entrante a los sitios, aplicaciones y servicios web que se ejecutan en ese grupo de aplicaciones.
- El modo Integrado permite a IIS procesar solicitudes en el grupo de aplicaciones mediante la canalización integrada de IIS 7 y versiones posteriores. Esto permite que los módulos ASP.NET participen en el procesamiento de solicitudes de IIS independientemente del tipo de recurso solicitado. El uso del modo integrado hace que las características disponibles de la canalización de solicitudes de ASP.NET 2.0 estén disponibles para las solicitudes de contenido estático, así como ASP, PHP y otros tipos de contenido. De forma predeterminada, los grupos de aplicaciones de IIS 7 y versiones posteriores se ejecutan en este modo.
- El modo Clásico usa la canalización de procesamiento de IIS 6.0 para hospedar aplicaciones ASP.NET. En este modo, las solicitudes se procesan inicialmente a través de los módulos IIS 7 y versiones posteriores, y las solicitudes de ASP.NET las procesa aspnet_isapi.dll. La canalización de procesamiento de ASP.NET es independiente de la canalización de procesamiento de IIS 7 y versiones posteriores, y las características de canalización de procesamiento de solicitudes de ASP.NET no están disponibles para otros tipos de recursos. Esto también significa que una solicitud de ASP.NET debe pasar por módulos de autenticación y autorización en ambos modelos de proceso. Aunque esto no es tan eficaz como el modo Integrado, permite ejecutar aplicaciones desarrolladas con ASP.NET versión 1.1 en un servidor IIS 7 y versiones posteriores sin modificar la aplicación para que se ejecute en modo integrado.
Novedad en IIS 7.5 y versiones posteriores
A partir de IIS 7.5, puede configurar una aplicación para que se inicie automáticamente mediante el los atributos managedRuntimeLoader, CLRConfigFile y startMode del elemento <add>
. Estos atributos configuran, respectivamente, el nombre del archivo DLL administrado que proporciona la carga en tiempo de ejecución para la aplicación, el archivo de configuración de Common Language Runtime para la aplicación y el tipo de inicio de la aplicación.
Otra novedad de IIS 7.5 y versiones posteriores es un nuevo tipo ApplicationPoolIdentity
para el atributo identityType del elemento <processModel>
. Este nuevo tipo de identidad es ahora la identidad de proceso predeterminada para las aplicaciones y permite establecer la seguridad de las áreas de contenido para permitir el acceso a un grupo de aplicaciones específico. Para ello, tendrá que establecer la seguridad con el nombre de un grupo de aplicaciones mediante la sintaxis como "IIS AppPool\DefaultAppPool". Esta identidad se crea de manera dinámica, lo que reduce drásticamente el área expuesta a ataques del servidor.
Compatibilidad
Versión | Notas |
---|---|
IIS 10.0 | El elemento <applicationPools> no se modificó en IIS 10.0. |
IIS 8.5 | El elemento <applicationPools> no se modificó en IIS 8.5. |
IIS 8.0 | El elemento <applicationPools> no se modificó en IIS 8.0. |
IIS 7.5 | El elemento <add> del elemento <applicationPools> se actualizó en IIS 7.5 para incluir atributos que le permiten cargar previamente las aplicaciones mediante los atributos managedRuntimeLoader, CLRConfigFile y atributos startMode y ejecutar aplicaciones mediante el nuevo ApplicationPoolIdentity. |
IIS 7.0 | El elemento <applicationPools> se introdujo en IIS 7.0. |
IIS 6,0 | El elemento <applicationPools> reemplaza el objeto de metabase de IIS 6.0 IIsApplicationPools. |
Configuración
La colección <applicationPools>
se incluye en la instalación predeterminada de IIS 7 y versiones posteriores.
Procedimientos
Procedimiento para crear un nuevo grupo de aplicaciones
Abra el Administrador de Internet Information Services (IIS):
Si usa Windows Server 2012 o Windows Server 2012 R2:
- En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, posteriormente, en Administrador de Internet Information Services (IIS).
Si usa Windows 8 o Windows 8.1:
- Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
- En Panel de control, haga clic en Herramientas administrativas y, posteriormente, haga doble clic en Administrador de Internet Information Services (IIS).
Si usa Windows Server 2008 o Windows Server 2008 R2:
- En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, posteriormente, haga clic en Administrador de Internet Information Services (IIS).
Si usa Windows Vista o Windows 7:
- En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
- Haga doble clic en Herramientas administrativas y, posteriormente, haga doble clic en Administrador de Internet Information Services (IIS).
En el panel Conexiones, expanda el nombre del servidor y, después, haga clic en Grupos de aplicaciones.
En el panel Acciones, haga clic en Agregar grupo de aplicaciones.
En el cuadro de diálogo Agregar grupo de aplicaciones, escriba el nombre del grupo de aplicaciones en el cuadro Nombre:, en la lista desplegable Versión de .NET Framework: seleccione la versión de .NET Framework que usa el sitio o la aplicación, en la lista desplegable Modo de canalización administrada: seleccione Integrado o Clásico, y después haga clic en Aceptar.
Procedimiento para configurar el grupo de aplicaciones para un sitio o aplicación existente
- En el panel Conexiones, expanda Sitios y, después, vaya al sitio web o a la aplicación web que quiera agregar al grupo de aplicaciones.
- En el panel Acciones, haga clic en Configuración avanzada...
- En la sección General del cuadro de diálogo Configuración avanzada, haga clic en la entrada Grupo de aplicaciones y después en el botón de puntos suspensivos.
- En el cuadro de diálogo Seleccionar grupo de aplicaciones, seleccione un grupo de aplicaciones en el cuadro desplegableGrupo de aplicaciones, haga clic en Aceptar y después otra vez en Aceptar.
Configuración
El elemento <applicationPools>
contiene una colección de elementos <add>
. Cada elemento de la colección configura un grupo de aplicaciones que se ejecuta en IIS 7 y versiones posteriores. Como mínimo, cada elemento <add>
contiene un atributo name que identifica el grupo de aplicaciones a la GUI y las herramientas de administración de línea de comandos. El elemento <add>
contiene elementos secundarios que configuran el modelo de proceso, la CPU y la configuración de reciclaje para el grupo de aplicaciones.
El elemento <applicationPools>
también contiene el elemento <applicationPoolDefaults>
, que define la configuración predeterminada para todos los grupos de aplicaciones en IIS 7 y versiones posteriores. Para cambiar la configuración predeterminada del grupo de aplicaciones en el servidor, puede editar el elemento <applicationPoolDefaults>
. Al crear un nuevo grupo de aplicaciones, los valores de configuración de ese grupo de aplicaciones invalidan los valores predeterminados establecidos en el elemento <applicationPoolDefaults>
.
Atributos
Ninguno.
Elementos secundarios
Elemento | Descripción |
---|---|
add |
Agrega un grupo de aplicaciones a la sección applicationPools. |
applicationPoolDefaults |
Atributo de cadena necesario. Configura los valores predeterminados para todos los grupos de aplicaciones de una sección applicationPools. |
Ejemplo de configuración
En el ejemplo de configuración siguiente se usa los elementos <add>
y <applicationPools>
del grupo de aplicaciones para definir los grupos de aplicaciones estándar y los valores predeterminados de IIS.
<applicationPools>
<add name="DefaultAppPool" />
<add name="Classic .NET AppPool" managedPipelineMode="Classic" />
<applicationPoolDefaults>
<processModel identityType="NetworkService" />
</applicationPoolDefaults>
</applicationPools>
Código de ejemplo
En los ejemplos siguientes se agrega un grupo de aplicaciones denominado Contoso y se establece el modo de canalización administrada en Integrado.
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso',autoStart='True',managedPipelineMode='Integrated']" /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 applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = @"Contoso";
addElement["autoStart"] = true;
addElement["managedPipelineMode"] = @"Integrated";
applicationPoolsCollection.Add(addElement);
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 applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add")
addElement("name") = "Contoso"
addElement("autoStart") = True
addElement("managedPipelineMode") = "Integrated"
applicationPoolsCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools",
"MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso";
addElement.Properties.Item("autoStart").Value = true;
addElement.Properties.Item("managedPipelineMode").Value = "Integrated";
applicationPoolsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools","MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection
Set addElement = applicationPoolsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso"
addElement.Properties.Item("autoStart").Value = True
addElement.Properties.Item("managedPipelineMode").Value = "Integrated"
applicationPoolsCollection.AddElement(addElement)
adminManager.CommitChanges()