Server Runtime <ServerRuntime>

Übersicht

Das <serverRuntime> Element konfiguriert die folgenden Einstellungen, die mit der IIS 7-Serverlaufzeit (Internet Information Services) zusammenhängen:

  • Wenn Sie das aktivierte Attribut auf wahr festlegen, wird IIS 7 so konfiguriert, dass Inhalte auf der URL bereitgestellt werden, in der das <serverRuntime> Element konfiguriert ist. Durch Festlegen des aktivierten Attributs auf falsch wird IIS 7 so konfiguriert, dass Inhalte für diese URL nicht bereitgestellt werden.

  • Das Attribut alternateHostName gibt einen Hostnamen an, der sich vom Computernamen im HTTP-Inhalts-Speicherort-Header unterscheidet.

  • Das Attribut appConcurrentRequestLimit gibt die maximale Anzahl gleichzeitiger Anforderungen an, die für eine Anwendung in die Warteschlange gestellt werden können.

  • Das Attribut enableNagling aktiviert oder deaktiviert den Nagle-Algorithmus, was eine Optimierung für HTTP über TCP darstellt, die die Effizienz erhöht, indem versucht wird, die Anzahl der Pakete zu minimieren, die vor dem Senden von Daten erforderlich sind. Es funktioniert, bis der Datenbereich voll ist, bis ein Zeitraum von 200 Millisekunden abläuft, oder bis der Absender angibt, dass das Senden von Daten abgeschlossen ist. IIS-Version 5.1 und frühere Versionen verwenden den Nagle-Algorithmus für alle Daten, die an den Client gesendet werden.

    Hinweis

    Der Nagle-Algorithmus hat einen möglichen Nachteil. Wenn eine Erweiterung das Paket nicht ausfüllt, liegt noch eine Verzögerung von 200 Millisekunden vor dem Senden der Antwort vor. Dieses Verhalten wird am häufigsten angezeigt, wenn Sie ISAPI-Erweiterungen verwenden, die einen HTTP-Keep-Alive-Header in der Antwort auf den Client unterstützen. In diesem Fall schließt IIS die Verbindung nach der Antwort nicht, sodass das endgültige Paket 200 Millisekunden wartet.

  • IIS 7 überprüft den Status von zwei Attributen, um die Datenverkehrsebene für eine bestimmte URL zu ermitteln. Das Attribut frequentHitThreshold konfiguriert die Anzahl der Anforderungen, und das Attribut frequentHitTimePeriod konfiguriert die zulässige Zeit, bevor diese URL als häufiger Treffer bewertet wird. Diese Informationen werden beim Schreiben von HTTP-Modulen verwendet, die diese Informationen für die Verarbeitung verwenden. Weitere Informationen finden Sie im Artikel zur IHttpUrlInfo::IsFrequentlyHit-Methode.

  • Die Attribute maxRequestEntityAllowed und uploadReadAheadSize konfigurieren die Grenzwerte für die maximale Anzahl von Bytes, die im Entitätstext einer Anforderung zulässig sind, und die Anzahl der Bytes, die ein Webserver in einen Puffer liest und an eine ISAPI-Erweiterung übergeben wird. Es sollte berücksichtigt werden, dass das Erhöhen dieser Werte es dem Endbenutzer ermöglicht, mehr Inhalte hochzuladen, die sich auf IIS-Runtime-Speicherressourcen auswirken können. Es wird empfohlen, diese Werte auf einer Zahl zu halten, die den Anwendungsanforderungen entspricht, und nur unter extremen Umständen wird der Maximalwert verwendet.

Neu in IIS 7.5

IIS 7.5 hat dem <serverRuntime>Element das Attribut authenticatedUserOverride hinzugefügt, das konfiguriert, ob die IIS 7-Server-Runtime die Identität des authentifizierten Nutzers oder die Arbeitsprozessidentität in den Methoden IHttpUser::GetPrimaryToken und IHttpUser::GetImpersonationToken bereitstellt. Dieses Attribut kann auf UseAuthenticatedUser " oder "UseWorkerProcessUser" festgelegt werden, und diese Werte geben an, ob die IIS 7-Server-Runtime die Identität des authentifizierten Nutzers oder die Arbeitsprozessidentität für jedes Modul bereitstellt, das den Identitätswechsel verwendet.

Kompatibilität

Version Hinweise
IIS 10.0 Das <serverRuntime> Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <serverRuntime> Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <serverRuntime> Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das authenticatedUserOverride-Attribut wurde in IIS 7.5 hinzugefügt.
IIS 7.0 Das <serverRuntime> Element wurde in IIS 7.0 eingeführt.
IIS 6.0 Das <serverRuntime>-Element ersetzt die folgenden IIS 6.0-Metabasiseigenschaften:
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

Setup

Das <serverRuntime>-Element ist in der Standardinstallation von IIS 7 enthalten.

Gewusst wie

Es gibt keine Benutzeroberfläche, über die Sie das <serverRuntime>-Element für IIS 7 konfigurieren können. Beispiele zum programmgesteuerten Konfigurieren des <serverRuntime>-Elements finden Sie im Abschnitt Codebeispiele dieses Dokuments.

Konfiguration

Attribute

Attribut Beschreibung
alternateHostName Optionales Zeichenfolgeattribut.

Gibt den Hostnamen an, der für die Umleitung verwendet werden soll.
appConcurrentRequestLimit Optionales Uint-Attribut.

Gibt die maximale Anzahl von Anforderungen an, die für eine Anwendung in die Warteschlange gestellt werden können.

Der Standardwert ist 5000.
authenticatedUserOverride Optionales Enumerationsattribut.

Gibt an, ob die IIS 7-Server-Runtime die Identität des authentifizierten Nutzers oder die Arbeitsprozessidentität für Module bereitstellt, die einen Identitätswechsel vornehmen.

Hinweis: Dieses Attribut wurde in IIS 7.5 hinzugefügt.
Wert Beschreibung
UseAuthenticatedUser Gibt an, dass IIS das Token des authentifizierten Nutzers bereitstellt. Anwendungen, die in diesem Kontext ausgeführt werden, sind auf alle Zugriffsbeschränkungen für die Identität des authentifizierten Nutzers beschränkt.

Der numerische Wert ist 1.
UseWorkerProcessUser Gibt an, dass IIS das Token für die Identität des Arbeitsprozesses bereitstellt, anstatt die Identität des authentifizierten Nutzers zu verwenden; Anwendungen, die in diesem Kontext ausgeführt werden, sind auf alle Zugriffsbeschränkungen für die Identität des Arbeitsprozesses beschränkt.

Der numerische Wert ist 2.
Der Standardwert ist UseAuthenticatedUser.
enabled Optionales Boolean -Attribut.

Gibt an, ob Anwendungen auf dem Webserver Inhalte (wahr) bereitstellen können oder nicht in der Lage sind, Inhalte (falsch) zu bedienen.

Der Standardwert ist true.
enableNagling Optionales Boolean -Attribut.

Gibt an, ob der Nagle-Algorithmus aktiviert (wahr) oder deaktiviert (falsch) ist.

Der Standardwert ist false.
frequentHitThreshold Optionales Uint-Attribut.

Gibt an, wie oft eine URL innerhalb der im Attribut frequentHitTimePeriod angegebenen Zeitspanne angefordert werden muss, um als häufiger Treffer zu gelten. Der Wert muss zwischen 1 und 2147483647 liegen.

Der Standardwert ist 2.
frequentHitTimePeriod Optionales TimeSpan-Attribut.

Gibt das Zeitintervall an, in dem eine URL so oft angefordert werden muss, wie im Attribut frequentHitThreshold angegeben wird, bevor sie als häufig getroffen betrachtet wird.

Der Standardwert ist 00:00:10 (10 Sekunden).
maxRequestEntityAllowed Optionales Uint-Attribut.

Gibt die maximale Anzahl von Bytes an, die in einem Entitätstext einer Anforderung enthalten sein können. Wenn der Header Inhaltslänge eine größere Zahl angibt, sendet IIS eine HTTP 403-Fehlerantwort.

Der Standardwert ist4294967295 (unbegrenzt).
uploadReadAheadSize Optionales Uint-Attribut.

Gibt die Anzahl der Bytes an, die ein Webserver in einen Puffer einliest und an eine ISAPI-Erweiterung oder ein ISAPI-Modul übergibt. Dies erfolgt einmal pro Clientanforderung. Die ISAPI-Erweiterung oder das Modul empfängt alle zusätzlichen Daten direkt vom Client. Der Wert muss zwischen 0 und 2147483647 liegen.

Der Standardwert ist 49152.

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Im folgenden Konfigurationsbeispiel wird das Attribut aktivieren des <serverRuntime>Elements auf wahr festgelegt. Anschließend wird die Anzahl der Anforderungen für eine URL so konfiguriert, dass sie als „häufig getroffen“ betrachtet wird, indem das Attribut frequentHitThreshold auf 5 Anforderungen und das Attribut frequentHitTimePeriod auf 20 Sekunden festgelegt wird.

<location path="Default Web Site">
   <system.webServer>
      <serverRuntime enabled="true"
         frequentHitThreshold="5"
         frequentHitTimePeriod="00:00:20" />
   </system.webServer>
</location>

Beispielcode

Die folgenden Codebeispiele legen das Attribut aktivieren des <serverRuntime>Elements auf wahr fest. Konfigurieren Sie dann die Anzahl der Anforderungen für eine URL so, dass sie als „häufig getroffen“ betrachtet wird, indem Sie das Attribut frequentHitThreshold auf 5 Anforderungen und das Attribut frequentHitTimePeriod auf 20 Sekunden festlegen.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /enabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitThreshold:"5" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitTimePeriod:"00:00:20" /commit:apphost

Hinweis

Sie müssen unbedingt den Commitparameterapphost festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection serverRuntimeSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site");
         serverRuntimeSection["enabled"] = true;
         serverRuntimeSection["frequentHitThreshold"] = 5;
         serverRuntimeSection["frequentHitTimePeriod"] = TimeSpan.Parse("00:00:20");

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim serverRuntimeSection As ConfigurationSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site")
      serverRuntimeSection("enabled") = True
      serverRuntimeSection("frequentHitThreshold") = 5
      serverRuntimeSection("frequentHitTimePeriod") = TimeSpan.Parse("00:00:20")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
serverRuntimeSection.Properties.Item("enabled").Value = true;
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5;
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site")
serverRuntimeSection.Properties.Item("enabled").Value = True
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20"

adminManager.CommitChanges()