Partager via


<processModel>, élément

Configure les paramètres du modèle de processus ASP.NET sur un serveur Web de services IIS (Internet Information Services). La section <processModel> peut être définie uniquement dans le fichier Machine.config et affecte toutes les applications ASP.NET qui s'exécutent sur le serveur.

Important   Lisez attentivement la section Notes relative à cet élément.

<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"/>

Attributs facultatifs

Attribut Option Description
clientConnectedCheck     Spécifie la durée pendant laquelle une demande reste dans la file d'attente avant que ASP.NET ne vérifie la connexion du client.
comAuthenticationLevel     Spécifie le niveau d'authentification pour la sécurité DCOM. La valeur par défaut est Connect.
    Default Spécifie que DCOM détermine le niveau d'authentification à l'aide de son algorithme de négociation de sécurité normal.
    None Ne spécifie aucune authentification.
    Connect Spécifie que DCOM vérifie les informations d'authentification du client uniquement lorsque celui-ci établit une relation avec le serveur.
    Call Spécifie que DCOM vérifie les informations d'authentification du client lorsque le serveur reçoit la demande au début de chaque appel de procédure distante.
    Pkt Spécifie que DCOM authentifie que toutes les données reçues proviennent du client attendu. Les transports datagrammes utilisent toujours l'authentification Pkt.
    PktIntegrity Spécifie que DCOM authentifie et vérifie qu'aucune des données transférées entre le client et le serveur n'a été modifiée.
    PktPrivacy Spécifie que DCOM authentifie tous les niveaux précédents et crypte la valeur d'argument de chaque appel de procédure distante.
comImpersonationLevel     Spécifie le niveau d'authentification pour la sécurité COM.
    Default Spécifie que DCOM détermine le niveau d'emprunt d'identité à l'aide de son algorithme de négociation de sécurité normal.
    Anonymous Spécifie que le client est anonyme pour le serveur. Le serveur peut emprunter l'identité du client, mais le jeton d'emprunt d'identité ne contiendra aucune information. Anonymous n'est pas pris en charge dans la version 1.1.
    Identify Spécifie que le serveur peut obtenir l'identité du client. Le serveur peut emprunter l'identité du client pour la vérification de la liste de contrôle d'accès (ACL), mais il n'a pas accès aux objets système comme le client.
    Impersonate Spécifie que le processus serveur peut emprunter l'identité du contexte de sécurité du client lorsqu'il agit au nom de ce client. Ce niveau d'emprunt d'identité peut être utilisé pour accéder à des ressources locales telles que des fichiers. Lors d'un emprunt d'identité à ce niveau, le jeton d'emprunt d'identité ne peut être passé que dans une limite d'ordinateur.
    Delegate Spécifie que le processus serveur peut emprunter l'identité du contexte de sécurité du client lorsqu'il agit au nom de ce client. Le processus serveur peut également effectuer des appels sortants vers d'autres serveurs lorsqu'il agit au nom du client, en utilisant le cloaking. Le serveur peut utiliser le contexte de sécurité du client sur d'autres ordinateurs afin d'accéder comme le client à des ressources locales et distantes. Lors d'un emprunt d'identité à ce niveau, le jeton d'emprunt d'identité peut passer dans n'importe quel nombre de limites d'ordinateur.
cpuMask     Spécifie, parmi les processeurs d'un serveur multiprocesseur, ceux qui sont autorisés à exécuter des processus ASP.NET. La valeur cpuMask spécifie une représentation binaire qui indique les UC autorisées à exécuter des threads ASP.NET. Par exemple, la valeur hexadécimale cpuMask 0x0d représente la représentation binaire 1101. Sur un ordinateur équipé de quatre UC, cela indique que les processus ASP.NET peuvent être planifiés sur les UC 0, 2 et 3, mais pas sur l'UC 1. ASP.NET lance un processus de traitement pour chaque UC autorisée. Si l'attribut webGarden (voir ci-après) a la valeur true, l'attribut cpuMask limite les processus de traitement au nombre d'UC autorisées. (Le nombre maximum autorisé de processus de traitement est égal au nombre d'UC). Par défaut, toutes les UC sont activées et ASP.NET lance un processus pour chaque UC. Si webGarden a la valeur false, l'attribut cpuMask est ignoré et un seul processus de traitement sera exécuté.
enable     Spécifie si le modèle de processus est activé.
    true Indique que le modèle de processus est activé.
    false Indique que le modèle de processus n'est pas activé.
idleTimeout     Spécifie la période d'inactivité, au format de chaîne h:min:s, après laquelle ASP.NET met automatiquement fin au processus de traitement. La valeur par défaut est Infinite.
logLevel     Spécifie les types d'événements à enregistrer dans le journal des événements.
    All Spécifie que tous les événements de processus sont enregistrés dans le journal.
    None Spécifie qu'aucun événement n'est enregistré dans le journal.
    Errors Spécifie que seuls les arrêts de types inattendu, saturation de mémoire et blocage seront enregistrés dans le journal. Errors est l'option par défaut.
maxWorkerThreads Entre 5 et 100 Configure la quantité maximale par UC de threads de travail à utiliser pour le processus. Par exemple, si cette valeur correspond à 25 sur un serveur à un seul processeur, ASP.NET utilise les API runtime pour limiter à 25 le nombre de processus. Sur un serveur équipé de deux processeurs, la limite est définie à 50. La valeur par défaut est 20. La valeur de maxWorkerThreads doit être égale ou supérieure au paramètre de l'attribut minFreeThread dans la section de configuration <httpRuntime>.
maxIoThreads Entre 5 et 100 Configure le nombre maximal par UC de threads d'E/S à utiliser pour le processus. Par exemple, si cette valeur correspond à 25 sur un serveur à un seul processeur, ASP.NET utilise les API runtime pour limiter à 25 le nombre de processus. Sur un serveur équipé de deux processeurs, la limite est définie à 50. La valeur par défaut est 20. La valeur de maxIoThreads doit être égale ou supérieure au paramètre de l'attribut minFreeThread dans la section de configuration <httpRuntime>.
memoryLimit     Spécifie la quantité de mémoire maximale autorisée, en tant que pourcentage de la mémoire système totale, que le processus de traitement peut consommer avant que ASP.NET ne lance un nouveau processus et ne réassigne les demandes existantes. La valeur par défaut est de 60 %.
password     S'il est présent (et associé à un userName), cet attribut fait en sorte que le processus de traitement s'exécute avec l'identité Windows configurée. La valeur par défaut est Autogenerate. Consultez userName pour plus d'informations sur les noms spéciaux System et Machine, qui ne requièrent pas de mot de passe et pour plus d'informations sur le stockage d'informations d'authentification de processus de traitement cryptées dans le Registre.
pingFrequency     Spécifie l'intervalle de temps, au format de modèle de processus standard (h:min:s), auquel l'extension ISAPI teste la ligne du processus de traitement pour savoir si elle fonctionne. Si elle ne fonctionne pas pour l'intervalle pingTimeout, le processus de traitement est redémarré. La valeur par défaut est 30 secondes.
pingTimeout     Spécifie l'intervalle de temps, au format de modèle de processus standard (h:min:s), après lequel un processus de traitement qui ne répond pas est redémarré. Les extensions ISAPI testent la ligne du processus de traitement selon l'intervalle pingFrequency. Si le processus de traitement ne répond pas dans l'intervalle pingTimeout, le processus est redémarré. La valeur par défaut est 5 secondes.
requestLimit     Spécifie le nombre de demandes autorisées avant que ASP.NET ne lance automatiquement un nouveau processus de traitement à la place de celui qui est en cours. La valeur par défaut est Infinite.
requestQueueLimit     Spécifie le nombre de demandes autorisées dans la file d'attente avant que ASP.NET ne commence à retourner des erreurs « 503 – Serveur encombré » aux nouvelles demandes. La valeur par défaut est 5000.
responseDeadlockInterval     Spécifie l'intervalle de temps, au format de modèle de processus standard (h:min:s), après lequel le processus sera redémarré si les conditions suivantes sont réunies :
  • Des demandes figurent dans la file d'attente.
  • Il n'y a pas eu de réponse au cours de cet intervalle.

La valeur par défaut est 3 minutes.

responseRestartDeadlockInterval     Cet attribut n'est plus utilisé par ASP.NET et est fourni uniquement à des fins de compatibilité ascendante. Cet attribut n'entraîne pas d'erreur de configuration si celui-ci est déjà présent dans un fichier de configuration. Tout le recyclage en cas de condition de blocage est désormais contrôlé par l'attribut responseDeadlockInterval.
serverErrorMessageFile     S'il est présent, spécifie le contenu d'un fichier à utiliser à la place du message par défaut « Serveur non disponible » en cas d'erreur irrécupérable. Le chemin d'accès à ce fichier peut être absolu, ou relatif par rapport à Machine.config. Si cet attribut n'est pas présent, le message par défaut « Serveur non disponible » sera utilisé.
shutdownTimeout     Spécifie le nombre de minutes accordé au processus de traitement pour qu'il s'arrête de lui-même. À l'expiration du délai, ASP.NET arrête le processus de traitement. Le temps est exprimé au format de chaîne h:min:s. La valeur par défaut est de 5 secondes, ou 0:00:05.
timeout     Spécifie le nombre de minutes autorisées avant que ASP.NET ne lance automatiquement un nouveau processus de traitement à la place de celui qui est en cours. La valeur par défaut est Infinite.
userName     S'il est présent, l'attribut userName exécute le processus de traitement ASP.NET avec une identité Windows différente de celle du processus par défaut. Par défaut, userName se voit attribuer la valeur spéciale Machine, et le processus s'exécute sous un compte d'utilisateur intitulé ASPNET créé automatiquement lors de l'installation de ASP.NET. Le mot de passe du compte ASPNET est généré de manière cryptographique au moment de l'installation. Si des informations d'authentification valides sont présentées dans les attributs userName et password, le processus est exécuté avec le compte donné. System est une autre valeur spéciale de userName, avec le mot de passe AutoGenerate, qui exécute le processus en tant que compte administratif et permet à tout le code utilisateur ASP.NET s'exécutant sous le processus de bénéficier des privilèges administratifs complets. Consultez la sections Notes ci-dessous pour des informations sur l'utilisation d'ASP.NET sur un serveur qui fonctionne en tant que contrôleur de domaine.

userName et password sont stockés en texte clair dans le fichier de configuration. Même si IIS ne transmet pas les fichiers .config en réponse à une demande d'agent utilisateur, ces fichiers de configuration peuvent être lus grâce à d'autres moyens comme par exemple un utilisateur authentifié dont les informations d'authentification sont correctes sur le domaine qui contient le serveur. Pour des raisons de sécurité, la section processModel prend en charge le stockage des attributs cryptés userName et password dans le Registre. Les informations d'authentification doivent être au format REG_BINARY cryptées par les fonctions de cryptage de Windows 2000 et Windows XP Data Protection API (DPAPI). Pour plus d'informations, consultez la section Notes et Exemple ci-dessous.

webGarden     Lorsque utilisé avec l'attribut cpuMask, contrôle l'affinité des UC. (Un serveur Web multiprocesseur est appelé jardin Web [Web garden]).
    true Indique que l'attribut cpuMask est utilisé pour spécifier les UC autorisées à exécuter des processus ASP.NET.
    false Indique que l'utilisation des UC est planifiée par le système d'exploitation Windows. L'attribut cpuMask est ignoré et un seul processus de traitement sera exécuté. La valeur par défaut est false.

Notes

Le système de configuration du code managé ne lit pas les paramètres de configuration <processModel>. Ces paramètres sont lus directement par la DLL non managée aspnet_isapi.dll. Les modifications apportées à cette section ne sont prises en compte qu'au redémarrage des services IIS.

Si vous installez le .NET Framework version 1.1 sur un contrôleur de domaine, l'installation ne crée pas le compte ASPNET local. Les applications ASP.NET s'exécutent sous d'autres identités. Sur les serveurs de contrôleurs de domaine Windows 2000, les applications ASP.NET s'exécutent sous l'identité IWAM_nommachine. Sur les serveurs de contrôleurs de domaine Windows 2003, les applications ASP.NET s'exécutent sous l'identité NETWORK SERVICE (quel que soit le mode d'isolation IIS). Dans certaines circonstances, l'exécution de ASP.NET sur un contrôleur de domaine nécessite que vous effectuiez des procédures supplémentaires pour faire fonctionner correctement l'installation. Pour plus d'informations sur les problèmes potentiels d'exécution de la version 1.1 sur un contrôleur de domaine, consultez l'article Q824308, « IWAM Account is Not Granted the Impersonate Privilege for ASP.NET 1.1 on Windows 2000 Domain Controller with SP4 » dans la Base de connaissances Microsoft à l'adresse https://support.microsoft.com. Pour plus d'informations sur l'exécution de la version 1.0 du .NET Framework sur un contrôleur de domaine, consultez l'article Q315158, « ASP.NET Does Not Work with the Default ASPNET Account on a Domain Controller », dans la Base de connaissances Microsoft à l'adresse https://support.microsoft.com.

Lorsque ASP.NET s'exécute sous IIS version 6 en mode natif, le modèle de processus IIS 6 est utilisé et les paramètres dans la section <processModel> sont ignorés. Pour configurer l'identité et le cycle des processus ou d'autres valeurs de modèle de processus, utilisez l'interface utilisateur Gestionnaire des services Internet pour configurer le processus de traitement IIS pour votre application.

Les valeurs d'heure sont au format "heures:minutes:secondes". Si un seul nombre sans les deux-points est donné, la valeur par défaut sont les minutes ; ainsi timeout="4" correspond à timeout="00:04:00".

Si une application ASP.NET entraîne le redémarrage du processus de traitement de ASP.NET (aspnet_wp.exe sur Windows 2000 et Windows XP Professionnel, w3wp.exe sur la famille Windows Server 2003) avec un message d'erreur indiquant que le redémarrage est provoqué par un état de blocage potentiel, vous devez augmenter le paramètre responseDeadlockInterval.

Stockage d'un nom d'utilisateur et d'un mot de passe dans le Registre

Pour crypter le nom d'utilisateur et le mot de passe et les stocker dans le Registre, définissez userName et password de la façon suivante.

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

La portion de la chaîne située après le mot clé registry et avant la virgule indique le nom de la clé de Registre ouverte par ASP.NET. La portion située après la virgule contient le nom d'une valeur de chaîne unique à partir duquel ASP.NET lit les informations d'authentification. La virgule est obligatoire et les informations d'authentification stockées doivent être stockées dans la ruche HKLM. Si le format de configuration n'est pas correct, ASP.NET ne lancera pas le processus de traitement et suivra le chemin de code d'échec de création de compte en cours.

Les informations doivent être au format REG_BINARY et contenir la sortie d'un appel à la fonction API Windows CryptProtectData. Vous pouvez créer les informations d'authentification cryptées et les stocker dans la base de Registre à l'aide de l'application console de l'outil ASP.NET Set Registry (Aspnet_setreg.exe) qui utilise CryptProtectData pour effectuer le cryptage. Pour télécharger Aspnet_setreg.exe ainsi que le code source et la documentation Visual C++, visitez le site Web www.asp.net et recherchez "aspnet_setreg".

Vous devez configurer l'accès à la clé qui stocke les informations d'authentification cryptées afin que l'accès soit fourni uniquement aux Administrateurs et à SYSTEM. Comme cette clé sera lue par le processus ASP.NET s'exécutant en tant que SYSTEM, vous devez définir les autorisations suivantes :

Administrateurs:F

SYSTEM:F

CREATOR OWNER:F

ProcessAccount:R

Ces autorisations fournissent deux lignes de défense permettant de protéger les données :

  • Les autorisations ACL nécessitent que l'identité qui accède aux données soit un Administrateur.
  • Un attaquant doit exécuter du code sur le serveur (CryptUnprotectData) pour récupérer les informations d'authentification du compte.

Exemples

L'exemple suivant spécifie plusieurs paramètres de configuration <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>

L'exemple suivant spécifie que le nom d'utilisateur et le mot de passe cryptés sont stockés dans le Registre sous la clé AspNetProcess définie par l'utilisateur.

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

Configuration requise

Contenu dans : <system.web>

Plate-forme Web : IIS 5.0, IIS 5.1, IIS 6.0

Fichier de configuration : Machine.config

Gestionnaire de sections de configuration : System.Web.Configuration.ProcessModelConfigurationHandler

Voir aussi

Configuration ASP.NET | Schéma des paramètres ASP.NET