processModel, élément (Schéma des paramètres ASP.NET)

[Cette documentation constitue un aperçu et pourra faire l'objet de modifications dans les versions ultérieures. Des rubriques vierges sont incluses en tant qu'espaces réservés.]

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.

Avertissement

Les modifications apportées à l'élément processModel entrent uniquement en vigueur lors du redémarrage du processus de travail mais pas immédiatement après la modification du paramètre, comme c'est le cas pour d'autres éléments de configuration.Pour plus d'informations, consultez la section « Remarques », plus loin dans cette rubrique.

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

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut

Description

autoConfig

Spécifie s'il faut configurer automatiquement les paramètres suivants pour obtenir des performances optimales en fonction de la configuration de l'ordinateur :

Les valeurs sont définies en fonction de l'article de la Base de connaissances situé à l'adresse https://support.microsoft.com/?id=821268.

Cet attribut n'affecte pas les applications clientes .NET Framework mais uniquement les applications ASP.NET.

L'attribut autoConfig peut avoir l'une des valeurs suivantes :

TermeDéfinition
True Indique qu'ASP.NET configure automatiquement les attributs répertoriés ci-dessus pour obtenir des performances optimales selon la configuration de l'ordinateur.
False Indique qu'ASP.NET doit utiliser les valeurs explicitement définies pour les attributs de la liste précédente.

La valeur par défaut dans le fichier Machine.config est True, à moins qu'il existe une configuration précédente.

clientConnectedCheck

Spécifie la durée de conservation d'une demande dans la file d'attente avant qu'ASP.NET vérifie si le client est connecté.

La valeur par défaut est "00:00:05" (5 secondes).

comAuthenticationLevel

Spécifie le niveau d'authentification pour la sécurité DCOM.

L'attribut comAuthenticationLevel peut avoir l'une des valeurs suivantes :

ValeurDescription
Call Spécifie que DCOM vérifie les informations d'identification du client lorsque le serveur reçoit la demande au début de chaque appel de procédure distante.
Connect Spécifie que DCOM authentifie les informations d'identification du client uniquement lorsque celui-ci établit une connexion au serveur.
Default Spécifie que DCOM détermine le niveau d'authentification à l'aide de son algorithme de négociation de sécurité standard.
None Ne spécifie pas d'authentification.
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 Indique que DCOM authentifie et vérifie si aucune des données transférées entre le client et le serveur n'est modifiée.
PktPrivacy Spécifie que DCOM authentifie tous les niveaux précédents et chiffre la valeur d'argument de chaque appel de procédure distante.

La valeur par défaut est Connect.

comImpersonationLevel

Spécifie le niveau d'authentification pour la sécurité COM.

L'attribut comImpersonationLevel peut avoir l'une des valeurs suivantes :

ValeurDescription
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 pas d'informations.Anonymous n'est pas pris en charge dans le .NET Framework version 1.1.
Default Spécifie que DCOM détermine le niveau d'emprunt d'identité à l'aide de son algorithme de négociation de sécurité standard.
Delegate Spécifie que le processus serveur peut emprunter l'identité du contexte de sécurité du client lorsqu'il agit pour le compte du 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 pour accéder aux ressources locales et distantes en tant que client.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.
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 pour le compte du 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.

La valeur par défaut est Impersonate.

cpuMask

Spécifie les processeurs (UC) d'un serveur multiprocesseur qualifiés pour exécuter des processus ASP.NET. Cette valeur spécifie un modèle binaire qui indique les processeurs qualifiés pour exécuter des threads ASP.NET. Par exemple, la valeur hexadécimale 0x0d cpuMask représente le modèle binaire 1101. Sur un ordinateur possédant 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 travail pour chaque UC qualifiée. Si l'attribut webGarden a la valeur true, cet attribut limite le nombre de processus de travail au nombre d'UC qualifiées. Le nombre maximal autorisé de processus de travail est égal au nombre d'UC. Si l'attribut webGarden a la valeur false, cet attribut est ignoré et un seul processus de travail sera exécuté. Il s'agit du comportement par défaut.

La valeur par défaut est "0xffffffff".

enable

Spécifie si le modèle de processus est activé.

L'attribut enable peut avoir l'une des valeurs suivantes :

ValeurDescription
True Indique que le modèle de processus est activé.
False Indique que le modèle de processus n'est pas activé.

La valeur par défaut est true.

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

La valeur par défaut est Infinite.

logLevel

Spécifie les types d'événement à enregistrer dans le journal des événements.

L'attribut logLevel peut avoir l'une des valeurs suivantes :

ValeurDescription
All Spécifie que tous les événements de processus sont enregistrés dans le journal.
Errors Spécifie que seuls les arrêts de types inattendu, saturation de mémoire et interblocage seront enregistrés dans le journal.
None Spécifie qu'aucun événement n'est enregistré.

La valeur par défaut est Errors.

maxAppDomains

Spécifie le nombre maximal de domaines d'application autorisés dans un processus.

Cet attribut peut être inférieur ou égal à 2000.

La valeur par défaut est 2000.

maxIoThreads

Configure le nombre maximal par UC de threads d'E/S à utiliser pour le processus. Par exemple, si cette valeur est 25 sur un serveur de processeur unique, ASP.NET utilise les API d'exécution pour affecter à la limite de processus la valeur 25. Sur un serveur à deux processeurs, la limite est définie sur 50. La valeur de cet attribut doit être égale ou supérieure au paramètre de l'attribut minFreeThread dans la section de configuration httpRuntime.

Pour plus d'informations sur les types de thread, consultez la section (en anglais) « Threading Explained » dans Improving ASP.NET Performance.

La plage de cet attribut varie entre 5 et 100.

La valeur par défaut est 20.

maxWorkerThreads

Configure le nombre maximal de threads de travail à utiliser par UC pour le processus. Par exemple, si cette valeur est 25 sur un serveur de processeur unique, ASP.NET utilise les API d'exécution pour affecter à la limite de processus la valeur 25. Sur un serveur à deux processeurs, la limite est définie sur 50. La valeur de cet attribut doit être égale ou supérieure au paramètre de l'attribut minFreeThread dans la section de configuration httpRuntime.

Pour plus d'informations sur les types de thread, consultez la section (en anglais) « Threading Explained » dans Improving ASP.NET Performance.

La plage de cet attribut varie entre 5 et 100.

La valeur par défaut est 20.

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 travail peut consommer avant qu'ASP.NET ne lance un nouveau processus et ne réassigne les demandes existantes.

La valeur par défaut est 60.

minIoThreads

Configure le nombre minimal par UC de threads d'E/S à utiliser pour le processus. Consultez également maxIoThreads.

Pour plus d'informations sur les types de thread, consultez la section (en anglais) « Threading Explained » dans Improving ASP.NET Performance.

La valeur par défaut est 1.

minWorkerThreads

Configure le nombre minimal de threads de travail à utiliser par UC pour le processus. Consultez également maxWorkerThreads.

Pour plus d'informations sur les types de thread, consultez la section (en anglais) « Threading Explained » dans Improving ASP.NET Performance.

La valeur par défaut est 1.

password

S'il est présent (et associé à un userName), cet attribut fait en sorte que le processus de travail s'exécute avec l'identité Microsoft Windows configurée. Consultez userName pour plus d'informations sur les noms spéciaux System et Machine qui n'exigent pas de mot de passe et pour plus d'informations sur le stockage des informations d'identification chiffrées des processus de travail dans le Registre.

NoteNote
Il existe certains risques de sécurité lorsque des informations d'identification sont stockées dans un fichier de configuration.Pour plus d'informations, consultez « Stockage d'un nom d'utilisateur et d'un mot de passe dans le Registre » plus loin dans ce document.

La valeur par défaut est AutoGenerate.

pingFrequency

Spécifie l'intervalle de temps, au format de modèle de processus standard (h:min:s), auquel l'extension ISAPI envoie une commande ping au processus de travail pour savoir s'il est en cours d'exécution. S'il ne fonctionne pas pour l'intervalle pingTimeout, le processus de travail est redémarré.

La valeur par défaut est Infinite.

pingTimeout

Spécifie l'intervalle de temps, dans le format de modèle de processus standard (h:min:s) après lequel un processus de travail sensible qui ne répond pas est redémarré. Les extensions ISAPI testent le processus de traitement au bout de 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 Infinite.

requestLimit

Spécifie le nombre de demandes autorisées avant qu'ASP.NET ne lance automatiquement un nouveau processus de travail à la place de celui qui est en cours.

La valeur par défaut est Infinite.

requestQueueLimit

Spécifie le nombre des demandes autorisées dans la file d'attente avant qu'ASP.NET ne commence à retourner le message "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 est 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 "0:03:00" (3 minutes).

responseRestartDeadlockInterval

Cet attribut n'est plus utilisé par ASP.NET et est fourni uniquement à des fins de compatibilité. Sa présence dans un fichier de configuration n'entraîne pas d'erreur de configuration. Tout le recyclage en cas de condition d'interblocage est désormais contrôlé par l'attribut responseDeadlockInterval.

La valeur par défaut est "0:03:00" (3 minutes).

restartQueueLimit

Spécifie le nombre maximal de demandes mises en file d'attente en attendant que le processus de travail redémarre après un arrêt anormal. Ce paramètre ne s'applique pas dans le cas d'un arrêt normal ou d'un redémarrage standard.

La valeur par défaut est 10.

serverErrorMessageFile

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 » est utilisé.

shutdownTimeout

Spécifie le nombre de minutes accordées au processus de travail pour qu'il s'arrête de lui-même. À l'expiration du délai, ASP.NET arrête le processus de travail. L'heure est exprimée au format de chaîne h:min:s.

La valeur par défaut est "0:00:05" (5 secondes).

timeout

Spécifie le nombre de minutes autorisées avant qu'ASP.NET ne lance automatiquement un nouveau processus de travail à la place de celui qui est en cours.

La valeur par défaut est Infinite.

userName

Spécifie qu'ASP.NET exécute le processus de travail avec une identité Windows différente de l'identité Windows utilisée comme identité de processus par défaut. Par défaut, cet attribut a la valeur Machine, et le processus s'exécute sous un compte d'utilisateur nommé ASPNET, créé automatiquement lors de l'installation d'ASP.NET. Le mot de passe du compte ASPNET est généré par chiffrement au moment de l'installation. Si des informations d'identification valides sont présentes dans cet attribut et l'attribut password, le processus est exécuté avec le compte donné. Une autre valeur de userName est System, avec le mot de passe AutoGenerate, qui exécute le processus en tant que compte d'administrateur et accorde des privilèges d'administrateur complets à tout le code utilisateur ASP.NET exécuté sous le processus. Pour plus d'informations concernant l'utilisation d'ASP.NET sur un serveur contrôleur de domaine, consultez la section « Notes », plus loin dans cette rubrique.

NoteNote
Cet attribut et l'attribut password sont stockés en texte clair dans le fichier de configuration.Même si Microsoft Internet Information Services (IIS) ne transmet pas les fichiers .config en réponse à une demande d'agent utilisateur, il est toujours possible de lire ces fichiers de configuration par d'autres moyens.Ainsi, un utilisateur authentifié, disposant des informations d'identification appropriées pour le domaine du serveur, peut lire un fichier de configuration.Pour des raisons de sécurité, la section processModel prend en charge le stockage des attributs userName et password chiffrés dans le Registre.Les informations d'identification doivent être au format REG_BINARY et chiffrées par les fonctions de chiffrement DPAPI (Data Protection API) de Windows 2000 et Windows XP.Pour plus d'informations, consultez « Stockage d'un nom d'utilisateur et d'un mot de passe dans le Registre » plus loin dans ce document.

La valeur par défaut est "machine".

webGarden

Contrôle l'affinité des UC lorsqu'il est utilisé avec l'attribut cpuMask. (Un serveur Web multiprocesseur est appelé jardin Web [Web garden]).

L'attribut webGarden peut avoir l'une des valeurs suivantes :

ValeurDescription
True Indique que l'attribut cpuMask est utilisé pour spécifier les unités centrales qualifiées pour 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 travail est exécuté.

La valeur par défaut est False.

Éléments enfants

Aucun

Éléments parents

Élément

Description

system.web

Spécifie l'élément racine de la section de configuration ASP.NET et contient des éléments de configuration qui configurent des applications Web ASP.NET et contrôlent le comportement des applications.

Notes

Le système de configuration du code managé ne lit pas les paramètres de configuration processModel . Au lieu de cela, les paramètres de configuration processModel sont lus directement par la DLL non managée aspnet_isapi.dll. Les modifications apportées à cette section ne sont pas appliquées tant que le processus de travail IIS n'a pas redémarré.

Lorsqu'ASP.NET s'exécute sous IIS version 6 en mode natif, le modèle de processus IIS 6 est utilisé et certains attributs de la section processModel sont ignorés. Toutefois, les attributs suivants sont toujours appliqués :

  • autoConfig

  • maxIoThreads

  • maxWorkerThreads

  • minIoThreads

  • minWorkerThreads

  • requestQueueLimit

  • responseDeadlockInterval

Pour plus d'informations sur le modèle de processus IIS 7, consultez Paramètres de modèle de processus pour un pool d'applications.

Pour configurer l'identité et le cycle des processus ou d'autres valeurs de modèle de processus dans IIS 6.0, utilisez l'interface utilisateur Gestionnaire des services Internet pour configurer le processus de travail IIS pour votre application.

Notes

ASP.NET 2.0 ne peut pas être utilisé lorsque vous configurez IIS 6 pour exécuter ASP.NET en mode isolation IIS 5.0.

Les valeurs d'heure se présentent au format "hours:minutes:seconds". Si un seul nombre est spécifié sans le signe deux-points, la valeur est supposée représenter des minutes ; timeout="4" est donc égal à timeout="00:04:00".

Si une application ASP.NET entraîne le redémarrage du processus de travail ASP.NET (aspnet_wp.exe sous Windows 2000 et Windows XP Professionnel, w3wp.exe sous Windows Server 2003) avec un message d'erreur indiquant que le redémarrage est provoqué par un état d'interblocage potentiel, vous devez augmenter l'attribut responseDeadlockInterval.

Contrôleurs de domaine et compte ASPNET local

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, et notamment les suivantes :

  • Sur les contrôleurs de domaine Windows 2000 Server, les applications ASP.NET s'exécutent sous l'identité IWAM_nommachine.

  • Sur les contrôleurs de domaine Windows Server 2003, les applications ASP.NET s'exécutent sous l'identité SERVICE RÉSEAU, indépendamment du mode d'isolation IIS.

Dans certains cas, l'exécution d'ASP.NET sur un contrôleur de domaine exige certaines mesures supplémentaires pour garantir le fonctionnement correct de l'installation. Pour plus d'informations sur l'exécution de la version 1.1 du .NET Framework sur un contrôleur de domaine, accédez à la page de recherche de la Base de connaissances (KB) et consultez l'article Q824308, « IWAM Account is Not Granted the Impersonate Privilege for ASP.NET 1.1 on Windows 2000 Domain Controller with SP4 » (en anglais). Pour plus d'informations sur l'exécution de la version 1.0 du .NET Framework sur un contrôleur de domaine, accédez à la page de recherche de la Base de connaissances (KB) et consultez l'article Q315158, « ASP.NET ne fonctionne pas avec le compte ASPNET par défaut sur un contrôleur de domaine ».

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

Pour chiffrer le nom d'utilisateur et le mot de passe et les stocker dans le Registre, définissez les attributs userName et password comme indiqué dans l'exemple suivant.

   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 partie qui suit la virgule (,) contient un nom de valeur de chaîne unique à partir duquel ASP.NET lit les informations d'identification. La virgule (,) est obligatoire et les informations d'identification 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 travail et suivra le chemin de code d'échec de création de compte actif.

Les informations d'identification doivent être au format REG_BINARY et contenir la sortie d'un appel à la fonction API Windows CryptProtectData. Vous pouvez utiliser Aspnet_setreg.exe pour créer les informations d'identification chiffrées et les stocker dans le Registre. Aspnet_setreg.exe utilise CryptProtectData pour effectuer le chiffrement. Pour télécharger Aspnet_setreg.exe ainsi que le code source et la documentation Microsoft Visual C++, visitez le site Web ASP.NET et recherchez « aspnet_setreg ».

Vous devez configurer l'accès à la clé qui stocke les informations d'identification chiffrées afin que seuls les administrateurs et SYSTEM bénéficient d'un accès. Dans la mesure où la clé est lue par le processus ASP.NET exécuté sous SYSTEM, définissez les autorisations suivantes :

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

Cela contribue à protéger les données de plusieurs façons :

  • Les autorisations ACL exigent que l'identité accédant aux données soit un administrateur.

  • Un attaquant doit exécuter du code sur le serveur (CryptUnprotectData) pour récupérer les informations d'identification du compte.

Configuration par défaut

L'élément processModel par défaut n'est pas configuré explicitement dans le fichier Machine.config ou dans le fichier Web.config racine. Toutefois, il s'agit de la configuration par défaut retournée par l'application.

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

L'élément processModel par défaut est configuré dans le fichier Machine.config des versions 1.0 et 1.1 du .NET Framework.

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

Informations sur les éléments

Gestionnaire de section de configuration

ProcessModelSection

Membre de configuration

ProcessModel

Emplacements configurables

Machine.config

Configuration requise

Microsoft Internet Information Services (IIS) version 5.0, 5.1 ou 6.0

.NET Framework version 1.0, 1.1 ou 2.0

Microsoft Visual Studio 2003 ou Visual Studio 2005

Voir aussi

Tâches

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

Référence

system.web, élément (Schéma des paramètres ASP.NET)

configuration, élément (Schéma des paramètres généraux)

System.Configuration

System.Web.Configuration

ProcessModel

ProcessModelSection

Concepts

Configuring ASP.NET Process Identity

ASP.NET Configuration File Hierarchy

Securing Configuration

Configuration Inheritance

Autres ressources

Paramètres généraux de configuration (ASP.NET)

Improving ASP.NET Performance

Paramètres de configuration ASP.NET

Configuring ASP.NET Applications

ASP.NET Configuration Files

ASP.NET Configuration API