Freigeben über


<processModel>-Element

Konfiguriert die Einstellungen des ASP.NET-Prozessmodells auf einem Microsoft IIS-Webserver (Internet-Informationsdienste, IIS). Der <processModel>-Abschnitt kann nur in der Datei Machine.config festgelegt werden und wirkt sich auf alle auf dem Server ausgeführten ASP.NET-Anwendungen aus.

**Vorsicht   **Lesen Sie den Abschnitt "Hinweise" für dieses Element.

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

Optionale Attribute

Attribut Option Beschreibung
clientConnectedCheck     Gibt an, wie lange eine Anforderung in der Warteschlange verbleibt, bevor ASP.NET überprüft, ob eine Verbindung zum Client besteht.
comAuthenticationLevel     Gibt die Authentifizierungsebene für die DCOM-Sicherheit an. Der Standardwert lautet Connect.
    Default Gibt an, dass DCOM die Authentifizierungsebene anhand des normalen Sicherheitsaushandlungsalgorithmus bestimmt.
    None Gibt keine Authentifizierung an.
    Connect Gibt an, dass DCOM die Anmeldeinformationen des Clients nur dann authentifiziert, wenn der Client eine Verbindung zum Server aufbaut.
    Call Gibt an, dass DCOM die Anmeldeinformationen des Clients authentifiziert, wenn der Server die Anforderung am Beginn jedes Remoteprozeduraufrufs erhält.
    Pkt Gibt an, dass DCOM authentifiziert, dass alle empfangenen Daten vom erwarteten Client stammen. Bei der Übertragung von Datagrammen wird immer die Pkt-Authentifizierung verwendet.
    PktIntegrity Gibt an, dass DCOM authentifiziert und überprüft, dass die zwischen dem Client und dem Server übertragenen Daten nicht geändert wurden.
    PktPrivacy Gibt an, dass DCOM alle vorigen Ebenen authentifiziert und den Argumentwert jedes Remoteprozeduraufrufs verschlüsselt.
comImpersonationLevel     Gibt die Authentifizierungsebene für die COM-Sicherheit an.
    Default Gibt an, dass DCOM die Ebene des Identitätswechsels anhand des normalen Sicherheitsaushandlungsalgorithmus bestimmt.
    Anonymous Gibt an, dass der Client für den Server anonym ist. Der Server kann den Client imitieren, das Identitätswechseltoken enthält jedoch keine Informationen. Anonymous wird in Version 1.1 nicht unterstützt.
    Identify Gibt an, dass der Server die Identität des Clients abrufen kann. Der Server kann den Client für die Überprüfung der Zugriffssteuerungsliste imitieren, er kann jedoch als Client nicht auf Systemobjekte zugreifen.
    Impersonate Gibt an, dass der Serverprozess den Sicherheitskontext des Clients imitieren kann, während er als Client agiert. Diese Ebene des Identitätswechsels kann für den Zugriff auf lokale Ressourcen, z. B. Dateien, verwendet werden. Wenn Identitätswechsel auf dieser Ebene erfolgt, kann das Identitätswechseltoken nur über einen Computer übertragen werden.
    Delegate Gibt an, dass der Serverprozess den Sicherheitskontext des Clients imitieren kann, während er als Client agiert. Mit Hilfe eines "Cloaking" genannten Verfahrens kann der Serverprozess auch ausgehende Aufrufe an andere Server ausführen, während er als Client agiert. Der Server kann den Sicherheitskontext des Clients auf anderen Computern verwenden, um als Client auf lokale Ressourcen und Remoteressourcen zuzugreifen. Wenn der Identitätswechsel auf dieser Ebene erfolgt, kann das Identitätswechseltoken über eine beliebige Anzahl von Computern übertragen werden.
cpuMask     Gibt an, welche Prozessoren eines Multiprozessorservers für die Ausführung von ASP.NET-Prozessen geeignet sind. Der cpuMask-Wert gibt ein Bitmuster an, das die für die Ausführung von ASP.NET-Threads geeigneten CPUs angibt. Der hexadezimale cpuMask-Wert 0x0d entspricht beispielsweise dem Bitmuster 1101. Dies gibt bei einem Computer mit vier CPUs an, dass ASP.NET-Prozesse für die CPUs 0, 2 und 3, nicht jedoch für CPU 1 geplant werden können. ASP.NET startet einen Workerprozess für jede geeignete CPU. Wenn das webGarden-Attribut (siehe unten) auf true festgelegt ist, schränkt cpuMask die Workerprozesse auf die Anzahl der geeigneten CPUs ein. (Die maximal zulässige Anzahl von Workerprozessen entspricht der Anzahl der CPUs.) Standardmäßig sind alle CPUs aktiviert, und ASP.NET startet einen Prozess für jede CPU. Wenn webGarden auf false festgelegt ist, wird das cpuMask-Attribut ignoriert, und es wird nur ein Workerprozess ausgeführt.
enable     Gibt an, ob das Prozessmodell aktiviert ist.
    true Gibt an, dass das Prozessmodell aktiviert ist.
    false Gibt an, dass das Prozessmodell nicht aktiviert ist.
idleTimeout     Gibt die Inaktivitätsdauer im Zeichenfolgenformat "h:min:s" an. Nach diesem Zeitraum beendet ASP.NET den Arbeitsprozess automatisch. Der Standardwert ist Infinite.
logLevel     Gibt Ereignistypen an, die im Ereignisprotokoll erfasst werden sollen.
    All Gibt an, dass alle Prozessereignisse protokolliert werden.
    None Gibt an, dass keine Ereignisse protokolliert werden.
    Errors Gibt an, dass nur unerwartete Abschaltvorgänge sowie Abschaltvorgänge aufgrund ausgelasteter Speicherkapazitäten und von Deadlocks im Protokoll erfasst werden. Die Standardeinstellung lautet Errors.
maxWorkerThreads 5 bis 100 Konfiguriert die maximale Anzahl von Workerthreads, die pro CPU für den Prozess verwendet werden können. Wenn für einen Server mit einem Prozessor beispielsweise ein Wert von 25 eingestellt ist, verwendet ASP.NET die Laufzeit-APIs, um die Prozessgrenzen auf 25 festzulegen. Der Standardwert ist 20. Der Wert für maxWorkerThreads muss größer oder gleich dem für das minFreeThread-Attribut im <httpRuntime>-Konfigurationsabschnitt festgelegten Wert sein.
maxIoThreads 5 bis 100 Konfiguriert die maximale Anzahl von E/A-Threads, die pro CPU für den Prozess verwendet werden können. Wenn für einen Server mit einem Prozessor beispielsweise ein Wert von 25 eingestellt ist, verwendet ASP.NET die Laufzeit-APIs, um die Prozessgrenzen auf 25 festzulegen. Der Standardwert ist 20. Der Wert für maxIoThreads muss größer oder gleich dem für das minFreeThread-Attribut im <httpRuntime>-Konfigurationsabschnitt festgelegten Wert sein.
memoryLimit     Gibt den maximal zulässigen Arbeitsspeicher in Prozent des gesamten Systemarbeitsspeichers an, der für die Arbeitsprozesse verwendet werden kann, bevor ASP.NET einen neuen Prozess startet und vorhandene Anforderungen neu zuweist. Der Standardwert ist 60 %.
password     Wenn vorhanden (und in Verbindung mit userName), wird der Arbeitsprozess mit der konfigurierten Windows-Identität ausgeführt. Der Standardwert ist AutoGenerate. Weitere Informationen zu den Sondernamen System und Machine, die kein Kennwort erfordern, und Informationen zum Speichern von verschlüsselten Workerprozess-Anmeldeinformationen in der Registrierung finden Sie in der Beschreibung von userName.
pingFrequency     Gibt im standardmäßigen Prozessmodellformat (h:min:s) an, in welchen Abständen die ISAPI-Erweiterung ein Pingsignal an den Arbeitsprozess sendet, um zu überprüfen, ob dieser ausgeführt wird. Wenn der Arbeitsprozess innerhalb des pingTimeout-Intervalls nicht ausgeführt wird, wird er erneut gestartet. Der Standardwert beträgt 30 Sekunden.
pingTimeout     Gibt im standardmäßigen Prozessmodellformat (h:min:s) an, nach welchem Zeitraum ein nicht reagierender Arbeitsprozess neu gestartet wird. Die ISAPI-Erweiterungen senden im pingFrequency-Abstand ein Pingsignal an den Arbeitsprozess. Wenn der Arbeitsprozess innerhalb des festgelegten pingTimeout-Abstands nicht antwortet, wird der Prozess neu gestartet. Der Standardwert beträgt 5 Sekunden.
requestLimit     Gibt die Anzahl der zulässigen Anforderungen an, bevor ASP.NET automatisch einen neuen Arbeitsprozess startet, der an die Stelle des aktuellen Arbeitsprozesses tritt. Der Standardwert ist Infinite.
requestQueueLimit     Legt die Anzahl der zulässigen Anforderungen in der Warteschlange fest, bevor ASP.NET für neue Anforderungen die Fehlermeldung 503 – Der Server ist ausgelastet zurückgibt. Der Standardwert ist 5000.
responseDeadlockInterval     Gibt im standardmäßigen Prozessmodellformat (h:min:s) an, nach welchem Zeitraum der Prozess neu gestartet wird, wenn die folgenden Bedingungen zutreffen:
  • Es sind Anforderungen in der Warteschlange enthalten.
  • Es lag keine Antwort innerhalb dieses Zeitintervalls vor.

Der Standardwert beträgt 3 Minuten.

responseRestartDeadlockInterval     Dieses Attribut wird in ASP.NET nicht mehr verwendet und nur zur Sicherstellung der Rückwärtskompatibilität bereitgestellt. Wenn es bereits in einer Konfigurationsdatei vorhanden ist, verursacht es keinen Konfigurationsfehler. Wiederverwendungen im Falle von Deadlockbedingungen werden nun mit dem responseDeadlockInterval-Attribut gesteuert.
serverErrorMessageFile     Wenn vorhanden, gibt dieses Attribut den Inhalt einer Datei an, der im Falle eines schwerwiegenden Fehlers anstelle der standardmäßigen Meldung Server nicht verfügbar ausgegeben wird. Der Speicherort der Datei wird relativ zu Machine.config angegeben oder kann ein absoluter Dateipfad sein. Wenn dieses Attribut nicht vorhanden ist, wird die standardmäßige Meldung Server nicht verfügbar verwendet.
shutdownTimeout     Gibt an, nach wie viel Minuten sich der Arbeitsprozess selbst beenden kann. Nach Ablauf des Timeouts beendet ASP.NET den Arbeitsprozess. Die Zeitangabe erfolgt im Zeichenfolgenformat "h:min:s". Der Standardwert beträgt 5 Sekunden (0:00:05).
timeout     Gibt an, nach wie viel Minuten ASP.NET einen neuen Arbeitsprozess startet, der an die Stelle des aktuellen Arbeitsprozesses tritt. Der Standardwert ist Infinite.
userName     Falls vorhanden, führt das userName-Attribut den Workerprozess mit einer Windows-Identität aus, die von der Indentität des Standardprozesses abweicht. Standardmäßig wird für userName der spezielle Wert Machine festgelegt, und der Prozess wird unter einem Benutzerkonto namens ASPNET ausgeführt, das bei der Installation von ASP.NET automatisch erstellt wird. Das Kennwort für das Konto ASPNET wird bei der Installation kryptographisch erstellt. Wenn die Attribute userName und password gültige Anmeldeinformationen enthalten, wird der Prozess mit dem angegebenen Konto ausgeführt. Ein weiterer spezieller Wert für userName ist System mit dem Kennwort AutoGenerate. Mit diesem Wert wird der Prozess als Administratorkonto ausgeführt und ermöglicht dem gesamten ASP.NET-Benutzercode, der in dem Prozess ausgeführt wird, volle Administratorenrechte. Informationen zur Verwendung von ASP.NET auf einem Server, der ein Domänencontroller ist, finden Sie im Abschnitt "Hinweise" weiter unten.

userName und password werden als Klartext in der Konfigurationsdatei gespeichert. Obwohl IIS Konfigurationsdateien nicht als Antwort auf eine User-Agent-Anforderung überträgt, können Konfigurationsdateien auf andere Weise gelesen werden. Beispielsweise hat ein authentifizierter Benutzer mit den richtigen Anmeldeinformationen für die Domäne, in der sich der Server befindet, Zugriff auf solche Dateien. Aus Gründen der Sicherheit unterstützt der processModel-Abschnitt die Speicherung von verschlüsselten userName-Attributen und password-Attributen in der Registrierung. Die Anmeldeinformationen müssen im REG_BINARY-Format vorliegen und mit den Verschlüsselungsfunktionen der Datensicherungs-API (Data Protection API, DPAPI) von Windows 2000 und Windows XP verschlüsselt werden. Weitere Informationen finden Sie in den Abschnitten "Hinweise" und "Beispiel" weiter unten.

webGarden     Bei Verwendung in Verbindung mit dem cpuMask-Attribut steuert dieses Attribut die CPU-Affinität. (Multiprozessor-Webserver werden als Webgarten bezeichnet).
    true Gibt an, dass mit Hilfe des cpuMask-Attributs festgelegt wird, welche CPUs für die Ausführung von ASP.NET-Prozessen geeignet sind.
    false Gibt an, dass die CPU-Auslastung vom Windows-Betriebssystem geplant wird. Das cpuMask-Attribut wird ignoriert, und es wird nur ein Workerprozess ausgeführt. Der Standardwert ist false.

Hinweise

Das Konfigurationssystem für verwalteten Code liest die <processModel>-Konfigurationseinstellungen nicht. Sie werden stattdessen direkt von der nicht verwalteten DLL aspnet_isapi.dll gelesen. Änderungen an diesem Abschnitt werden erst nach dem Neustart von IIS angewendet.

Wenn Sie .NET Framework, Version 1.1, auf einem Domänencontroller installieren, wird bei der Installation nicht das lokale Konto ASPNET erstellt. ASP.NET-Anwendungen laufen vielmehr unter anderen Identitäten. Auf Windows 2000-Domänencontrollerservern werden ASP.NET-Anwendungen unter der Identität IWAM_computername ausgeführt. Auf Windows 2003-Domänencontrollerservern werden ASP.NET-Anwendungen unter der Identität NETWORK SERVICE ausgeführt (unabhängig vom IIS-Isolierungsmodus). Unter bestimmten Umständen müssen Sie bei der Ausführung von ASP.NET auf einem Domänencontroller zusätzliche Schritte durchführen, damit die Installation ordnungsgemäß funktioniert. Weitere Informationen über potenzielle Probleme bei der Ausführung von Version 1.1 auf einem Domänencontroller finden Sie in Artikel Q824308, "IWAM Account is Not Granted the Impersonate Privilege for ASP.NET 1.1 on Windows 2000 Domain Controller with SP4" (nur auf Englisch verfügbar), in der Microsoft Knowledge Base unter https://support.microsoft.com. Weitere Informationen über die Ausführung von Version 1.0 von .NET Framework auf einem Domänencontroller finden Sie in Artikel Q315158, "ASP.NET Does Not Work with the Default ASPNET Account on a Domain Controller" (nur auf Englisch verfügbar), in der Microsoft Knowledge Base unter https://support.microsoft.com.

Wenn ASP.NET unter IIS Version 6 im einheitlichen Modus ausgeführt wird, wird das IIS 6-Prozessmodell verwendet, und die Einstellungen im <processModel>-Abschnitt werden ignoriert. Zum Konfigurieren der Prozessidentität, von Zyklen und anderen Prozessmodellwerten verwenden Sie die Benutzeroberfläche des Internetdienste-Managers, um den IIS-Workerprozess für die Anwendung zu konfigurieren.

Für Zeitwerte gilt das Format "Stunden:Minuten:Sekunden". Wenn eine einzelne Zahl ohne Punkte angegeben wird, wird angenommen, dass der Wert die Minuten festlegt. Der Wert timeout="4" entspricht also timeout="00:04:00".

Wenn eine ASP.NET-Anwendung den Neustart des ASP.NET-Workerprozesses (aspnet_wp.exe unter Windows 2000 und Windows XP Professional, w3wp.exe für die Windows Server 2003-Familie) verursacht und dabei eine Fehlermeldung ausgibt, derzufolge der Neustart durch einen vermuteten Deadlockzustand bedingt war, müssen Sie die Einstellung für responseDeadlockInterval erhöhen.

Speichern von Benutzername und Kennwort in der Registrierung

Um den Benutzernamen und das Kennwort zu verschlüsseln und in der Registrierung zu speichern, legen Sie die Attribute userName und password folgendermaßen fest.

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

Der Bereich der Zeichenfolge zwischen dem Schlüsselwort registry und dem Komma gibt den Namen des Registrierungsschlüssels an, der von ASP.NET geöffnet wird. Der Abschnitt hinter dem Komma enthält die Bezeichnung eines einzelnen Zeichenfolgenwerts, aus dem ASP.NET die Anmeldeinformationen entnimmt. Das Komma ist obligatorisch, und die Anmeldeinformationen müssen in der HKLM-Struktur gespeichert werden. Wenn das Konfigurationsformat unzulässig ist, startet ASP.NET den Workerprozess nicht und folgt dem aktuellen Codepfad für Fehler bei der Kontoerstellung.

Die Anmeldeinformationen müssen im REG_BINARY-Format vorliegen und die Daten enthalten, die durch einen Aufruf der Windows-API-Funktion CryptProtectData ausgegeben werden. Sie können die verschlüsselten Anmeldeinformationen mit der ASP.NET-Konsolenanwendung Set Registry (Aspnet_setreg.exe) erzeugen und in der Registrierung speichern. Diese Anwendung verwendet CryptProtectData, um die Verschlüsselung auszuführen. Sie können Aspnet_setreg.exe zusammen mit dem Visual C++-Quellcode und der Dokumentation von der Website www.asp.net downloaden. Suchen Sie dazu in dieser Website nach "aspnet_setreg".

Konfigurieren Sie den Zugriff auf den Schlüssel mit den verschlüsselten Anmeldeinformationen so, dass nur Administratoren und SYSTEM der Zugriff ermöglicht wird. Da der Schlüssel von dem ASP.NET-Prozess gelesen wird, der als SYSTEM ausgeführt wird, müssen Sie die folgenden Berechtigungen festlegen:

Administrators:F

SYSTEM:F

CREATOR OWNER:F

ProcessAccount:R

Zwei Verteidigungsstrategien zum Schutz der Daten stehen also zur Verfügung:

  • Aufgrund der ACL-Berechtigungen ist der Zugriff auf die Daten nur für Administratoren möglich.
  • Angreifer müssen Code auf dem Server ausführen (CryptUnprotectData), um die Anmeldeinformationen für das Konto wiederherzustellen.

Beispiele

Im folgenden Beispiel werden verschiedene Konfigurationseinstellungen für <processModel> angegeben.

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

Im folgenden Beispiel wird festgelegt, dass der verschlüsselte Benutzername und das verschlüsselte Kennwort in der Registrierung unter dem benutzerdefinierten Schlüssel AspNetProcess gespeichert sind.

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

Anforderungen

Enthalten in: <system.web>

Webplattform: IIS 5.0, IIS 5.1, IIS 6.0

Konfigurationsdatei: Machine.config

Konfigurationsabschnittshandler: System.Web.Configuration.ProcessModelConfigurationHandler

Siehe auch

ASP.NET-Konfiguration | ASP.NET-Einstellungsschema