Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von IIS-Team
Dieser Artikel enthält eine Übersicht über den HttpPlatformHandler und erläutert die Konfiguration des Moduls.
Übersicht über die Funktionalität
Der HttpPlatformHandler ist ein IIS-Modul für IIS 8+, das die folgenden beiden Aktionen ausführt:
- Prozessverwaltung von HTTP-Listenern – dies kann jeder Prozess sein, der auf einen Port für HTTP-Anforderungen lauschen kann. Beispiel: Tomcat, Jetty, Node.exe, Ruby usw.
- Proxyanforderungen an den Prozess, den er verwaltet.
HttpPlatformHandler-Konfiguration
Der HttpPlatformHandler wird über die web.config-Datei einer Website oder Anwendung konfiguriert und verfügt über einen eigenen Konfigurationsabschnitt innerhalb von system.webServer - httpPlatform.
Konfigurationsattribute
| Attribut | Beschreibung |
|---|---|
processPath |
Erforderliches Attribut. Pfad zur ausführbaren Datei oder zum Skript, das einen Prozess startet, der auf HTTP-Anforderungen lauscht. Ab v1.2 werden relative Pfade unterstützt, wenn der Pfad mit "." beginnt, wird der Pfad als relativ zum Websitestamm betrachtet. Es gibt keinen Standardwert. |
arguments |
Optionaler Zeichenfolgenwert. Argumente für die ausführbare Datei oder das Skript, die in der ProcessPath-Einstellung angegeben sind. Es gibt keinen Standardwert. |
startupTimeLimit |
Optionales Ganzzahlattribut. Dauer in Sekunden, für die HttpPlatformHandler wartet, bis die ausführbare Datei/das Skript einen Prozess startet, der auf dem Port lauscht. Wenn dieses Zeitlimit überschritten wird, wird der Prozess von HttpPlatformHandler beendet und es wird versucht, ihn bis zu startupRetryCount-Mal erneut zu starten. Der Standardwert ist 10. |
startupRetryCount |
Optionales Ganzzahlattribut. Häufigkeit, mit der httpPlatformHandler versucht, den in processPath angegebenen Prozess zu starten. Weitere Informationen finden Sie unter startupTimeLimit . Der Standardwert ist 10. |
rapidFailsPerMinute |
Optionales Ganzzahlattribut. Gibt an, wie viele Abstürze des in ProcessPath angegebenen Prozesses pro Minute zulässig sind. Wenn dieser Grenzwert überschritten wird, beendet HttpPlatformHandler den Start des Prozesses für den Rest der Minute. Das attribut managedPipelineMode kann einen der folgenden möglichen Werte aufweisen. Der Standardwert lautet 10. |
requestTimeout |
Optionales Zeitraum-Attribut. Gibt die Dauer an, für die der HttpPlatformHandler auf eine Antwort des Prozesses wartet, der auf %HTTP_PLATFORM_PORT% hört. Der Standardwert ist "00:02:00". |
stdoutLogEnabled |
Optionales boolesches Attribut. Wenn "true", wird "stdout " und "stderr " für den in der ProcessPath-Einstellung angegebenen Prozess an die in stdoutLogFile angegebene Datei umgeleitet. Der Standardwert ist false. |
stdoutLogFile |
Optionales Zeichenfolgeattribut. Gibt den relativen ODER absoluten Dateipfad an, für den stdout und stderr aus dem in processPath angegebenen Prozess protokolliert werden. Relative Pfade sind relativ zum Stamm der Site. Ab Version 1.2 wird jeder Pfad, der mit "." beginnt, relativ zum Websitestamm, und alle anderen Pfade werden als absolute Pfade behandelt. Der Standardwert ist httpplatform-stdout. |
processesPerApplication |
Optionales Ganzzahlattribut. Gibt die Anzahl der Instanzen des Prozesses an, die in der ProcessPath-Einstellung angegeben sind und pro Anwendung hochgefahren werden können. Der Höchstwert ist 100. Der Standardwert ist 1. |
forwardWindowsAuthToken |
Wahr oder Falsch. Neu für v1.2. Wenn diese Einstellung auf "true" festgelegt ist, wird das Token als Header "X-IIS-WindowsAuthToken" pro Anforderung an den untergeordneten Prozess weitergeleitet, der auf %HTTP_PLATFORM_PORT% hört. Es liegt in der Verantwortung dieses Prozesses, CloseHandle für dieses Token pro Anforderung aufzurufen. Der Standardwert ist false. |
Untergeordnete Elemente
| Element | Beschreibung |
|---|---|
| environmentVariables | Konfiguriert die EnvironmentVariables-Auflistung für den in der ProcessPath-Einstellung angegebenen Prozess. |
| recycleOnFileChange | konfiguriert die Dateisammlung , die den Arbeitsprozess wiederverwendet, wenn Änderungen an der Datei in der angegebenen Liste vorgenommen werden. Elementsyntax, z. B. <Dateipfad=".\touch.txt"/> oder <Dateipfad="c:\file.txt"/> |
HttpPlatformHandler-Konfigurationsbeispiele
Im Folgenden finden Sie Konfigurationsbeispiele zum Ausführen einer Reihe von Anwendungen mit verschiedenen Prozessen.
Tomcat
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat"
arguments=""
stdoutLogEnabled="true"
stdoutLogFile="\\?c:\dev\javasites\log.txt">
<environmentVariables>
<environmentVariable name="JRE_HOME" value="%programfiles%\java\jdk1.8.0_25" />
<environmentVariable name="CATALINA_OPTS" value="-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value"/>
<environmentVariable name="CATALINA_HOME" value="c:\dev\javasites\bin\apache-tomcat-8.0.15" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
Jetty
<?xml version="1.0"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules ="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\Program Files\Java\jdk1.8.0_25\bin\java.exe"
arguments="-Djava.net.preferIPv4Stack=true -Djetty.port=%HTTP_PLATFORM_PORT% -Djetty.base="c:\dev\javasites\bin\jetty-distribution-9.2.6.v20141205" -jar "c:\dev\javasites\bin\jetty-distribution-9.2.6.v20141205\start.jar""
startupTimeLimit="20"
startupRetryCount="20"
stdoutLogEnabled="true"></httpPlatform>
</system.webServer>
</configuration>
Beispielcode
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.GetWebConfiguration("JavaSites");
ConfigurationSection httpPlatformSection = config.GetSection("system.webServer/httpPlatform");
httpPlatformSection["processPath"] = @"c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat";
httpPlatformSection["arguments"] = @"";
httpPlatformSection["stdoutLogFile"] = @"=""\\?c:\dev\javasites\log.txt";
ConfigurationElementCollection environmentVariablesCollection = httpPlatformSection.GetCollection("environmentVariables");
ConfigurationElement environmentVariableElement = environmentVariablesCollection.CreateElement("environmentVariable");
environmentVariableElement["name"] = @"JRE_HOME";
environmentVariableElement["value"] = @"=""%programfiles%\java\jdk1.8.0_25";
environmentVariablesCollection.Add(environmentVariableElement);
ConfigurationElement environmentVariableElement1 = environmentVariablesCollection.CreateElement("environmentVariable");
environmentVariableElement1["name"] = @"CATALINA_OPTS";
environmentVariableElement1["value"] = @"=""-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value";
environmentVariablesCollection.Add(environmentVariableElement1);
ConfigurationElement environmentVariableElement2 = environmentVariablesCollection.CreateElement("environmentVariable");
environmentVariableElement2["name"] = @"CATALINA_HOME";
environmentVariableElement2["value"] = @"c:\dev\javasites\bin\apache-tomcat-8.0.15";
environmentVariablesCollection.Add(environmentVariableElement2);
serverManager.CommitChanges();
}
}
}
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/JavaSites";
var httpPlatformSection = adminManager.GetAdminSection("system.webServer/httpPlatform", "MACHINE/WEBROOT/APPHOST/JavaSites");
httpPlatformSection.Properties.Item("processPath").Value = "c:\\dev\\javasites\\bin\\apache-tomcat-8.0.15\\bin\\startup.bat";
httpPlatformSection.Properties.Item("arguments").Value = "";
httpPlatformSection.Properties.Item("stdoutLogFile").Value = "=\"\\\\?c:\\dev\\javasites\\log.txt";
var environmentVariablesCollection = httpPlatformSection.ChildElements.Item("environmentVariables").Collection;
var environmentVariableElement = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement.Properties.Item("name").Value = "JRE_HOME";
environmentVariableElement.Properties.Item("value").Value = "=\"%programfiles%\\java\\jdk1.8.0_25";
environmentVariablesCollection.AddElement(environmentVariableElement);
var environmentVariableElement1 = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement1.Properties.Item("name").Value = "CATALINA_OPTS";
environmentVariableElement1.Properties.Item("value").Value = "=\"-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value";
environmentVariablesCollection.AddElement(environmentVariableElement1);
var environmentVariableElement2 = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement2.Properties.Item("name").Value = "CATALINA_HOME";
environmentVariableElement2.Properties.Item("value").Value = "c:\\dev\\javasites\\bin\\apache-tomcat-8.0.15";
environmentVariablesCollection.AddElement(environmentVariableElement2);
adminManager.CommitChanges();
Befehlszeile (AppCmd)
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /processPath:"c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat" /arguments:"" /stdoutLogFile:"="""\\?c:\dev\javasites\log.txt"
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /+"environmentVariables.[name='JRE_HOME',value='="""%programfiles%\java\jdk1.8.0_25']"
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /+"environmentVariables.[name='CATALINA_OPTS',value='="""-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value']"
appcmd.exe set config "JavaSites" -section:system.webServer/httpPlatform /+"environmentVariables.[name='CATALINA_HOME',value='c:\dev\javasites\bin\apache-tomcat-8.0.15']"
PowerShell
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform" -name "processPath" -value "c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform" -name "arguments" -value ""
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform" -name "stdoutLogFile" -value "="""\\?c:\dev\javasites\log.txt"
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform/environmentVariables" -name "." -value @{name='JRE_HOME';value='="""%programfiles%\java\jdk1.8.0_25'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform/environmentVariables" -name "." -value @{name='CATALINA_OPTS';value='="""-Dport.http=%HTTP_PLATFORM_PORT% -Dsomeotherconfig=value'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/JavaSites' -filter "system.webServer/httpPlatform/environmentVariables" -name "." -value @{name='CATALINA_HOME';value='c:\dev\javasites\bin\apache-tomcat-8.0.15'}