Partager via


Configuration d’hébergement partagé ASP.NET 2.0/3.5

Auteur Walter Oliver

Introduction

IIS offre des améliorations pour le contenu dynamique, en particulier ASP.NET. Dans IIS 7 et versions ultérieures, le modèle d’extensibilité du runtime ASP.NET est intégré avec le serveur principal. Cela permet aux développeurs d’étendre entièrement IIS avec les fonctionnalités enrichies d’ASP.NET 2.0 ou version ultérieure et le .NET Framework, au lieu d’utiliser des API C++ de niveau inférieur. Les applications ASP.NET existantes bénéficieront d’une intégration plus étroite en étant en mesure d’utiliser des fonctionnalités existantes telles que l’authentification par formulaire, les rôles et la mise en cache de sortie pour tous les types de contenu, pas seulement les pages .aspx.

Pour en savoir plus sur certaines des principales fonctionnalités et avantages de l’intégration d’ASP.NET à IIS, consultez la Vue d’ensemble du Core Web Server. Pour plus d’informations sur l’installation du .NET Framework 3.5, consultez https://www.microsoft.com/net/ ou le site de la communauté ASP.NET.

Les paramètres suivants ont été utilisés sur le serveur Web dans le cadre de l’architecture d’hébergement partagé mentionnée dans l’article « Planification de l’architecture d’hébergement partagé » dans l’Aide sur l’hébergement. Pour en savoir plus sur la raison pour laquelle ces paramètres sont recommandés et pour plus d’informations sur la façon de les configurer, téléchargez le Guide de déploiement d’hébergement ASP.NET 4.

Configuration des niveaux de confiance

Les niveaux de confiance vous permettent de définir des règles de sécurité pour ASP.NET. Ils définissent les types d’opérations qu’une application peut effectuer, telles que la lecture à partir du disque ou l’accès au Registre. Le niveau de confiance recommandé est Moyen, ce qui permet de nombreuses opérations courantes, mais limite la plupart des applications dangereuses. Si vous devez autoriser plus d’opérations que la confiance moyenne, vous devez créer un niveau de confiance personnalisé.

Pour configurer un niveau de confiance personnalisé et configurer des autorisations supplémentaires

  1. Accédez au répertoire %windir%\Microsoft.NET\Framework \{version}\ CONFIG.

  2. Copiez le fichier de stratégie de confiance moyenne, web_mediumtrust.config, pour créer un fichier de stratégie dans le même répertoire %windir%\Microsoft.NET\Framework\{version}\ CONFIG\.

  3. Renommez le fichier pour indiquer qu’il s’agit d’un niveau de confiance personnalisé, par exemple, web_CustomTrust.config.

  4. Ouvrez le nouveau fichier, web_CustomTrust.config et recherchez la section WebPermission.

    ...

    <IPermission class="WebPermission"
    
    version="1"
                   <ConnectAccess>
                       <URI uri="$OriginHost$" />
                   </ConnectAccess>
         </IPermission>
    

    ...

  5. Modifiez WebPermission, afin que l’élément ConnectAccess soit supprimé et Unrestricted est défini sur true.

    ...

    <IPermission class="WebPermission"
    
    version="1" 
                      Unrestricted="true"/>
    

    ...

  6. Commentez PrintingPermission et EnvironmentPermission, sauf si l’on sait qu’ils sont nécessaires pour l’environnement d’hébergement partagé.

  7. Ajoutez le nouvel élément <trustLevel> à la section <securityPolicy> du fichier Web.config, comme indiqué ci-dessous :

    <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>
    
  8. Verrouillez le niveau de confiance, afin qu’il ne puisse pas être modifié par les applications sur le serveur, en définissant l’emplacement l’élément allowOverride sur 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>
    

Configuration du contenu à servir à partir d’un serveur de fichiers distant

Lors de la configuration d’ASP.NET pour utiliser du contenu stocké sur un serveur de fichiers distant, quelques étapes supplémentaires sont nécessaires.

Quand IIS reçoit du contenu d’un serveur de fichiers distant, il emprunte l’identité de l’utilisateur authentifié. Il s’agit de l’utilisateur spécifiquement défini comme utilisateur de répertoire virtuel, ou s’il n’est pas spécifié, l’utilisateur anonyme. Les instructions IIS indiquent que l’utilisateur du pool d’applications doit être utilisé comme utilisateur anonyme. Dans ce cas, l’identité empruntée est l’identité du pool d’applications. L’utilisation d’une identité pour tous les accès (anonyme, pool d’applications et répertoire virtuel) simplifie considérablement un déploiement.

Pour exécuter certaines applications ASP.NET à partir d’un serveur de fichiers distant, l’utilisateur impersonné doit avoir accès aux répertoires temporaires Windows et de compilation temporaires.

Pour servir du contenu ASP.NET à partir d’un partage de serveur de fichiers

  1. Accordez l’autorisation à toutes les identités de pool d’applications au répertoire %windir%\Temp en modifiant les listes de contrôle d’accès pour le dossier.

  2. Ajoutez une stratégie de sécurité d’accès du code (CAS) pour autoriser l’accès approprié à ASP.NET au partage de serveur de fichiers. Pour ce faire, ouvrez une invite de commandes et exécutez la commande suivante :

    %windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1.  -url "file://\\remotefileserver\content$\*" FullTrust
    

Configuration des paramètres du récupérateur de mémoire

Le .NET Framework utilise la récupération de mémoire automatique afin de gérer la mémoire pour toutes les applications. Lorsque le récupérateur de mémoire (GC) décide que suffisamment de mémoire s’est accumulée et qu’il est opportun de le faire, il effectue une récupération afin de libérer de la mémoire. Ce processus est entièrement automatique, mais il existe des paramètres qui peuvent le rendre plus efficace.

Pour plus d’informations sur le récupérateur de mémoire, consultez «Chapitre 5 - Amélioration des performances du code managé», en particulier la section Récupération de mémoire expliquée.

Activation du récupérateur de mémoire de station de travail

Par défaut, le serveur GC est utilisé par le .NET Framework pour optimiser la vitesse et la charge du processeur. Pour l’hébergement partagé, où la mémoire est plus souvent la contrainte d’un certain nombre de sites actifs, le récupérateur de mémoire de station de travail doit être utilisé. Le récupérateur de mémoire de station de travail optimise la mémoire.

Pour en savoir plus sur ce paramètre, consultez l’article de la Base de connaissances, « Vous pouvez recevoir un message d’erreur ou l’ordinateur cesse de répondre lorsque vous hébergez des applications web qui utilisent des ASP.NET sur un ordinateur exécutant Windows Server 2003 » (https://support.microsoft.com/kb/911716).

Désactiver le récupérateur de mémoire concurrent

Il existe 3 versions du récupérateur de mémoire : Serveur, Station de travail avec activation simultanée et Station de travail avec désactivation simultanée. Le récupérateur de mémoire de station de travail simultanée est destiné aux scénarios clients. Comme le récupérateur de mémoire de serveur hiérarchise le débit et la scalabilité l’extensibilité au détriment de la mémoire, le récupérateur de mémoire de station de travail concurrent hiérarchise la réactivité au détriment de la mémoire. Pour optimiser la mémoire, désactivez le récupérateur de mémoire concurrent lorsque vous utilisez le récupérateur de mémoire de station de travail.

Activation du paramètre gcTrimCommitOnLowMemory

Étant donné que le récupérateur de mémoire retient la mémoire pour les répartitions futures, l’espace alloué peut être supérieur à ce qui est strictement nécessaire. Vous pouvez réduire cet espace pour tenir compte de ces situations lorsqu’il y a une charge importante sur la mémoire système. Lorsque le paramètre est activé, le récupérateur de mémoire évalue la charge de la mémoire système et entre en mode de suppression lorsque la charge atteint 90 %. Il conserve le mode de suppression jusqu'à ce que la charge soit inférieure à 85 %. Lorsque les conditions le permettent, le récupérateur de mémoire peut décider que le paramètre n’aidera pas l’application et l’ignorer.

Pour configurer les paramètres du récupérateur de mémoire

  1. Accédez au répertoire %windir%\Microsoft.NET\Framework\{version}.

  2. Ouvrez le fichier aspnet.config et recherchez l’élément <gcServer>. Si l’élément n’existe pas, créez une entrée à l’aide de l’étape 3.

    ...

    <configuration> 
    <runtime> 
    <gcServer enabled="true"/> 
    </runtime> 
    </configuration>
    ...
    
  3. Ajoutez les trois éléments suivants dans la section <runtime> :

    ...

    <configuration> 
    <runtime> 
    <gcServer enabled="false" />
    
    <gcConcurrent enabled="false" />
    <gcTrimCommitOnLowMemory enabled="true" />
    </runtime> 
    </configuration>
    ...
    
  4. Enregistrez le fichier et fermez-le.