Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
por Walter Oliver
Introducción
IIS ofrece mejoras para el contenido dinámico, especialmente ASP.NET. En IIS 7 y versiones posteriores, el modelo de extensibilidad en tiempo de ejecución de ASP.NET se integra en el servidor principal. Esto permite a los desarrolladores ampliar completamente IIS con la funcionalidad enriquecida de ASP.NET 2.0 o versiones posteriores y .NET Framework, en lugar de usar las API de C++ de nivel inferior. Las aplicaciones de ASP.NET existentes se beneficiarán de la mayor integración al poder usar características existentes como la autenticación de formularios, los roles y el almacenamiento en caché de la salida para todo tipo de contenidos, no solo las páginas de .aspx.
Para más información sobre algunas de las características clave y las ventajas de la integración de ASP.NET con IIS, consulte la Introducción a Core Web Server. Para obtener información sobre cómo instalar .NET Framework 3.5, consulte https://www.microsoft.com/net/ o el sitio de la comunidad de ASP.NET.
Use la siguiente configuración en el servidor web como parte de la arquitectura de Hospedaje compartido mencionada en el artículo "Planeamiento de la arquitectura de Hospedaje compartido" de la Guía de hospedaje. Para más información sobre por qué se recomiendan estas configuraciones y para obtener detalles adicionales sobre cómo configurarlas, descargue la Guía de implementación de hospedaje de ASP.NET 4.
Configuración de los niveles de confianza
Los niveles de confianza le permiten definir reglas de seguridad para ASP.NET. Definen qué tipos de operaciones puede realizar una aplicación, como leer del disco o acceder al registro. El nivel de confianza recomendado es Media, que permite muchas operaciones comunes pero restringe muchas de las aplicaciones peligrosas. Si necesita permitir más operaciones de las que permite la confianza Media, deberá crear un nivel de confianza personalizado.
Configurar un nivel de confianza personalizado y configurar permisos adicionales
Vaya al directorio
%windir%\Microsoft.NET\Framework \{version}\ CONFIG
.Copie el archivo de directiva de confianza media, web_mediumtrust.config, para crear un nuevo archivo de directiva en el mismo directorio
%windir%\Microsoft.NET\Framework\{version}\ CONFIG\
.Cambie el nombre del archivo para indicar que se trata de un nivel de confianza personalizado, por ejemplo, web_CustomTrust.config.
Abra el nuevo archivo, web_CustomTrust.config, y localice la sección WebPermission.
...
<IPermission class="WebPermission"
version="1" <ConnectAccess> <URI uri="$OriginHost$" /> </ConnectAccess> </IPermission>
...
Edite WebPermission para que el elemento ConnectAccess se elimine y Unrestricted se establezca en true.
...
<IPermission class="WebPermission"
version="1" Unrestricted="true"/>
...
Marque como comentarios PrintingPermission y EnvironmentPermission, a menos que se sepa que son necesarios para el entorno de Hospedaje compartido.
Agregue el nuevo elemento
<trustLevel>
a la sección<securityPolicy>
del archivo Web.config, como se muestra a continuación:<location allowOverride="true">
<system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>
Bloquee el nivel de confianza para que no pueda ser cambiado por las aplicaciones en el servidor, estableciendo el elemento de ubicación allowOverride en false.
<location allowOverride="false"> <system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>
Configuración del contenido que se servirá desde un servidor de archivos remoto
Cuando se configura ASP.NET para trabajar con contenidos almacenados en un servidor de archivos remoto, se requieren algunos pasos adicionales.
Cuando IIS recibe contenido de un servidor de archivos remoto, suplanta al usuario autenticado. Se trata del usuario establecido específicamente como usuario del directorio virtual o, si no se especifica ninguno, del usuario anónimo. Las directrices de IIS establecen que el usuario del grupo de aplicaciones debe usarse como usuario anónimo, por lo que en este caso la identidad suplantada es la del grupo de aplicaciones. El uso de una sola identidad para todos los accesos (anónimos, grupo de aplicaciones y directorio de aplicación) simplifica enormemente una implementación.
Para ejecutar algunas aplicaciones de ASP.NET desde un servidor de archivos remoto, el usuario suplantado debe tener acceso a los directorios de compilación temporal y temp de Windows.
Servir contenido de ASP.NET desde un recurso compartido de servidor de archivos
Conceda permiso para todas las identidades del grupo de aplicación al directorio
%windir%\Temp
editando las ACL de la carpeta.Agregue una directiva de seguridad de acceso al código (CAS) para permitir el acceso adecuado de ASP.NET al recurso compartido de archivos del servidor. Para ello, abra una solicitud y ejecute el siguiente comando:
%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1. -url "file://\\remotefileserver\content$\*" FullTrust
Configuración de los ajustes del recolector de elementos no utilizados
El marco .NET usa la recolección automática de elementos no utilizados para administrar la memoria de todas las aplicaciones. Cuando el recolector de elementos no utilizados (GC) decide que se ha acumulado suficiente basura y que es eficiente hacerlo, realiza una recopilación para liberar algo de memoria. Este proceso es totalmente automático, pero hay configuraciones que pueden hacerlo más eficaz.
Para más información sobre la GC, consulte "Capítulo 5: Mejora del rendimiento del código administrado" y eche un vistazo a la sección Explicación de la recolección de elementos no utilizados.
Habilitación del recolector de elementos no utilizados de la estación de trabajo
De manera predeterminada, .NET Framework usa la GC del servidor para optimizar la velocidad y la carga de la CPU. En el caso del Hospedaje compartido, en el que la memoria suele ser la limitación para varios sitios activos, debería usarse la GC de estación de trabajo. La GC de la estación de trabajo optimiza la memoria.
Para más información sobre esta configuración, consulte el artículo de KB, "Es posible que reciba un mensaje de error, o que el equipo deje de responder, cuando hospede aplicaciones web que utilicen ASP.NET en un equipo que ejecute Windows Server 2003" (https://support.microsoft.com/kb/911716
).
Deshabilitar el recolector de elementos no utilizados simultáneo
Existen 3 versiones de GC: servidor, estación de trabajo con simultaneidad habilitada y estación de trabajo con simultaneidad deshabilitada. La GC de estación de trabajo simultánea está pensada para escenarios cliente. Al igual que la GC del servidor clasifica por orden de prioridad el rendimiento y la escalabilidad con un coste de memoria, la GC de estación de trabajo simultánea clasifica por orden de prioridad la capacidad de respuesta con un coste de memoria. Para optimizar la memoria, deshabilite la recolección de elementos no utilizados simultánea cuando use la GC de estación de trabajo.
Habilitación de la configuración gcTrimCommitOnLowMemory
Dado que el GC retiene memoria para futuras asignaciones, su espacio confirmado puede ser mayor que el estrictamente necesario. Este espacio puede reducirse para adaptarse a situaciones en las que haya una gran carga en la memoria del sistema. Cuando esta configuración está habilitada, la GC evalúa la carga de la memoria del sistema y entra en un modo de recorte cuando la carga alcanza el 90 %. El modo de reducción se mantiene hasta que la carga desciende por debajo del 85 %. Cuando las condiciones lo permitan, el GC puede decidir que la configuración no ayudará a la aplicación e ignorarla.
Establecer la configuración del GC
Vaya al directorio
%windir%\Microsoft.NET\Framework\{version}
.Abra el archivo aspnet.config y localice el elemento
<gcServer>
. Si el elemento no existe, cree una entrada usando el paso 3....
<configuration> <runtime> <gcServer enabled="true"/> </runtime> </configuration> ...
Agregue los tres elementos siguientes dentro de la sección
<runtime>
:...
<configuration> <runtime> <gcServer enabled="false" />
<gcConcurrent enabled="false" /> <gcTrimCommitOnLowMemory enabled="true" /> </runtime> </configuration> ...
Guarde el archivo y ciérrelo.