Konfiguration des IIS-Host-Plug-Ins

Die Host-Plug-In-Konfiguration Windows Remoteverwaltung (WinRM) Internetinformationsdienste (IIS) bietet einen Hostingmechanismus, mit dem WinRM-Plug-Ins von Drittanbietern Verwaltungsdaten innerhalb der WinRM-Infrastruktur verfügbar machen können.

In den folgenden Abschnitten wird die Konfiguration des IIS-Host-Plug-Ins beschrieben:

IIS-Hostingdetails

Eine Anwendung, die den WinRM SOAP-Prozessor in IIS konfiguriert und initialisiert, empfängt Anforderungen direkt von einem WinRM-Client auf einem anderen Computer mithilfe des WS-Management Protokolls. Die Anwendung muss auch einen HTTP-Endpunkt konfigurieren, der die Anwendung identifiziert, um sicherzustellen, dass alle Anforderungen direkt an die anwendungsspezifischen Plug-Ins weitergeleitet werden. Die Anwendung muss außerdem konfigurieren, welche Plug-Ins auf den IIS-Host geladen werden sollen, sowie die erforderlichen Autorisierungs- und Authentifizierungsmechanismen. Bei Verwendung des WinRM-Diensts in IIS sollten die folgenden Faktoren berücksichtigt werden:

  • IIS unterstützt standardmäßig keine Kerberos-Authentifizierung. Es kann jedoch ein IIS-Modul zur Unterstützung der Kerberos-Authentifizierung erstellt werden.
  • Der IIS-Dienst akzeptiert keine verschlüsselten WinRM-Dienstanforderungen über HTTP.
  • Nachdem Sie einen IIS-Endpunkt eingerichtet haben, schlägt die erste Anforderung fehl, die Sie mit impliziten Anmeldeinformationen senden. alle nachfolgenden Anforderungen werden jedoch erfolgreich ausgeführt. Dies ist ein bekanntes Problem bei einem IIS-Standort, der mit der Standardauthentifizierung im Kernelmodus konfiguriert ist. Wenn dies ein Blockierungsproblem ist, wird empfohlen, die Kernelmodusauthentifizierung zu deaktivieren.

IIS-Hostkonfigurationsmodell

Alle Anwendungen, die einen SOAP-Prozessor (WinRM Simple Object Access Protocol) in IIS hosten, erfordern eine Konfiguration, bevor sie funktionieren.

Jede Anwendungskonfiguration ist von der der anderen Anwendungen getrennt. Die folgenden Sätze von Konfigurationen sind erforderlich, obwohl möglicherweise nicht alle Konfigurationen geändert werden müssen, und sie werden über den WinRM-Hauptdienst ausgeführt:

  • Allgemeine Anwendungskonfiguration, einschließlich Vorgangstime outs.
  • Ein Autorisierungs-Plug-In zum Autorisieren von LiveID-Anforderungen oder zum Zuordnen des Windows Benutzerkontos zu einem allgemeineren Dienstkonto.
  • Vorgangs-Plug-Ins, die vom WinRM-SOAP-Prozessor gehostet und zum Ausführen der tatsächlichen Anforderungen verwendet werden sollen.

Die folgenden Konfigurationen müssen möglicherweise in IIS konfiguriert werden:

  • Informationen zum Listenerendpunkt, die definieren, welche Ports und Adressen auf Anforderungen lauschen, sowie alle SSL-Zertifikate (Secure Sockets Layer).
  • Clientzertifikatzuordnung zum Zuordnen von Clientzertifikaten zu Benutzerkonten.
  • Autorisierungskonfiguration, um einzuschränken, wer Zugriff auf den virtuellen Standort hat.

Der WinRM-Dienst registriert Port 5985 standardmäßig mit dem Präfix "wsman". Wenn der Kompatibilitäts-HTTP-Listener aktiviert ist, registriert der WinRM-Dienst standardmäßig Port 80 mit dem Präfix "wsman". Da IIS standardmäßig auch an Port 80 lauscht, wird empfohlen, dass IIS-Hostdienste Listener an einem anderen Port erstellen.

Wenn sowohl iis als auch der WinRM-Dienst Port 80 gemeinsam nutzen, ist die folgende Konfiguration erforderlich, um den Port freizugeben:

  • Der IIS-Hostdienst muss WinRM für eine Anwendung unter der Website aktivieren.
  • Der Anwendungsname muss dem URI hinzugefügt werden. Beispiel: https://servername/myapplication.

Jede IIS-Hostanwendung wird in der IIS-Konfiguration als web.config Datei gespeichert, die sich im physischen Verzeichnis befindet, das dem konfigurierten virtuellen Verzeichnis entspricht. Im folgenden Abschnitt wird beschrieben, wie das IIS-Konfigurationssystem funktioniert und wie es erweitert werden kann, um die WinRM-IIS-Hostkonfiguration zu unterstützen.

Funktionsweise der IIS-Konfiguration

Die IIS-Konfigurationsinfrastruktur besteht aus einem Satz von XML-Dateien, die zum Speichern von Konfigurationsdaten verwendet werden, und einer Reihe von Schemadateien, die zum Überprüfen von Daten verwendet werden, die in IIS-Verwaltungs-APIs geschrieben oder gelesen werden. Auf Der Stammebene befindet sich eine ApplicationHost.config-Datei im selben Verzeichnis wie IIS (in der Regel %windir% \ System32 \ InetSrv-Konfiguration). \ Dies ist die Hauptkonfigurationsdatei für IIS, in der die Liste der Standorte, Anwendungen, virtuellen Verzeichnisse, allgemeinen Einstellungen, Protokollierung, Zwischenspeicherung usw. gespeichert wird. Konfigurationsdaten sind in unabhängige Entitäten unterteilt, auf die als Abschnitte zugegriffen werden kann.

Beispielsweise gibt es separate Abschnitte für Standorte, Protokollierung, Zwischenspeicherung usw. Alle in ApplicationHost.config enthaltenen Konfigurationsdaten werden auf alle Standorte, Anwendungen und virtuellen Verzeichnisse angewendet, die in IIS konfiguriert sind. Auf der Ebene des virtuellen Verzeichnisses definiert eine web.config-Datei anwendungsspezifische Konfigurationsdaten, möglicherweise durch Überschreiben anderer Daten, die bereits in ApplicationHost.config definiert sind. Web.config Dateien werden im Stammverzeichnis (physisches Verzeichnis) gespeichert, das dem Standort, der Anwendung oder dem virtuellen Verzeichnis entspricht, für das die Konfiguration gilt.

Weitere Informationen zur IIS-Konfiguration finden Sie in den folgenden Themen:

Das IIS-Konfigurationsschema, mit dem IIS-Konfigurationsdaten überprüft werden, sind XML-Dateien, die im IIS-Schemaverzeichnis gespeichert sind (in der Regel %windir% \ System32 \ InetSrv-Konfigurationsschema). \ \ Das IIS-Konfigurationsschema ist nicht XSD. Die IIS-Konfiguration unterstützt Erweiterbarkeit. Neue Konfigurationsabschnitte können direkt in das IIS-Konfigurationssystem integriert werden, und die Einstellungen des IIS-Konfigurationssystems können mithilfe der vorhandenen Verwaltungs-APIs bearbeitet werden.

Im Folgenden werden die wichtigsten Schritte beschrieben:

  • Definieren Sie einen neuen Konfigurationsabschnitt in einer XML-Schemadatei.
  • Platzieren Sie die Datei im IIS 7-Schemaverzeichnis (%windir% \ System32 \ InetSrv-Konfigurationsschema). \ \
  • Registrieren Sie den neuen Abschnitt in der globalen IIS-Konfigurationsdatei (ApplicationHost.config).

Setup und Details zur Konfiguration des IIS-Hosts (WinRM)

In diesem Abschnitt werden die Schritte beschrieben, die während des Setups ausgeführt werden müssen, um die IIS-Hostkonfiguration zu integrieren und zu initialisieren. Hier bezieht sich die IIS-Hostkonfiguration auf die Konfigurationsdaten, die zum Ausführen des WinRM-Diensts in IIS erforderlich sind. Das WinRM IIS-Erweiterungsmodul ist eine optionale Komponente, die mit dem Server-Manager installiert wird.

Der IIS-Konfigurationsabschnitt, der die erforderliche Konfiguration definiert, wird system.management.wsmanagement.config aufgerufen. In der Regel wird die IIS-Hostkonfiguration während des Setups definiert. Hierzu können Sie eine web.config-Datei erstellen und den entsprechenden XML-Code hinzufügen. Alle Änderungen an der web.config-Datei erfordern einen Neustart der Website, auf der der WinRM-Dienst gehostet wird.

Im folgenden Verfahren wird das Einrichten der WinRM IIS-Erweiterung ausführlich beschrieben.

So installieren Sie die WinRM IIS-Erweiterung

  1. Klicken Sie im Abschnitt Zusammenfassung der Features des Server-Manager auf Features hinzufügen.
  2. Wählen Sie im Assistenten zum Hinzufügen von Features die Option WinRM IIS-Erweiterung aus.
  3. Befolgen Sie die Anweisungen des Assistenten, einschließlich der Installation der erforderlichen Software, sofern angegeben. Weitere Informationen zur Verwendung des Assistenten zum Hinzufügen von Features finden Sie in der Server-Manager Onlinehilfe.

Initialisieren der WinRM-Konfiguration für die gehostete Anwendung

Dieser Schritt umfasst das Definieren der IIS-Hostkonfigurations-XML in der web.config-Datei. Diese Datei befindet sich im physischen Verzeichnis, das dem virtuellen Verzeichnis entspricht, in dem die gehostete Anwendung konfiguriert ist. Der XML-Inhalt für den system.management.wsmanagement.config Abschnitt sollte dem in wsmanconfigschema.xml definierten Schema _ entsprechen. Andernfalls können die IIS-Verwaltungs-APIs ihn nicht verarbeiten. Im Folgenden finden Sie ein Beispiel für XML-Inhalt, der in der datei web.config enthalten sein kann:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
  <system.management.wsmanagement.config>
   <OperationsConfiguration MaxEnvelopeSizeKB="150" 
                            MaxOperationTimeoutSeconds="60"  
                            MaxEnumerateIdleTimeoutSeconds="60"  
                            MaxSubscribeIdleTimeoutSeconds="60"  
                            MaxShellIdleTimeoutMinutes="15"
                            QuotaRefreshIntervalSeconds="900"
                            QuotaSystemWindowSeconds="2"
                            QuotaSystemWindowOperations-"1000"/>
    <PluginModules>
     <AuthorizationPlugin Name="Auth1" Filename="Auth.dll" SDKVersion="1" SupportsQuota="true"/>
     <OperationsPlugins>
      <Plugin Name="PL1" Filename="PL1.dll" SDKVersion="1" XmlRenderingType="text">
       <InitializationParameters>
        <Param name="myParam1" value="myValue1"/>
       </InitializationParameters>
       <Resources>
        <Resource ResourceUri="myUri1">
        <Capability Type="Shell"/>
        </Resource>
       </Resources>
      </Plugin>
      <Plugin Name="PL2" Filename="PL2.dll" SDKVersion="1" XmlRenderingType="text">
       <InitializationParameters/>
       <Resources>
        <Resource ResourceUri="myUri1">
         <Capability Type="Get"/>
         <Capability Type="Put"/>
         <Capability Type="Delete"/>
        </Resource>
       </Resources>
      </Plugin>
     </OperationsPlugins>
    </PluginModules>
   </OperationsConfiguration>
  </system.management.wsmanagement.config>
 </system.webServer>
</configuration>

In der folgenden Liste werden die XML-Elemente ausführlicher beschrieben, gefolgt von einem Beispiel für eine _ wsmanconfig-schema.xml-Datei.

Element BESCHREIBUNG
OperationsConfiguration/MaxEnvevesSizeKB Die maximale Größe der SOAP-Pakete, die der WinRM-Dienst verarbeitet. Der Standardwert ist 150 KB.
OperationsConfiguration/MaxOperationTimeoutSeconds Das maximale Time out-Intervall für alle Vorgänge. Dieser Wert überschreibt jeden Wert, der in einem SOAP-Paket empfangen wird. Wenn ein Anbieter diesen Wert überschreitet, wird ein Time out an den Client gesendet, und der Vorgang wird abgebrochen. (Einige Vorgänge, z. B. Enumerationen, können eine Enumeration nach einem Time out geöffnet lassen.) Der Standardwert ist 60 Sekunden.
OperationsConfiguration/MaxEnumerationIdleTimeoutSeconds Das maximale Time out-Intervall für Enumerationen. Wenn die Zeit zwischen Enumerationsanforderungen größer als dieser Wert ist, wird die Enumeration abgebrochen, und der zuvor ausgegebene Enumerationskontext ist nicht mehr gültig. Der Standardwert ist 60 Sekunden.
OperationsConfiguration/MaxSubscribeIdleTimeoutSeconds Das maximale Time out-Intervall für Subscribe-Vorgänge. Der Standardwert ist 60 Sekunden.
OperationsConfiguration/MaxShellIdleTimeoutMinutes Die maximale Zeit in Minuten, bevor eine inaktive Remoteshell gelöscht wird. Der Standardwert ist 15 Minuten.
OperationsConfiguration/QuotaRefreshIntervalSeconds Das Intervall, bevor die Kontingentinformationen für einen Benutzer aktualisiert werden. Ausstehende Anforderungen für den angegebenen Benutzer werden weiterhin unter dem vorherigen Autorisierungs- und Kontingentkontext ausgeführt, bis die Aktualisierung abgeschlossen ist. Der Standardwert ist 900 Sekunden.
OperationsConfiguration/QuotaSystemWindowSeconds Die Dauer des gleitenden Fensters der Systemdrosselung. Der Standardwert beträgt 2 Sekunden.
OperationsConfiguration/QuotaSystemWindowOperations Die Anzahl der Vorgänge, die während des gleitenden Fensters durch die Systemdrosselung aufgenommen werden. Der Standardwert ist 1.000 Vorgänge.
PlugInModules/AuthorizationPlugin Dieser Knoten ist optional. Ein Autorisierungs-Plug-In ermöglicht eine programmgesteuerte Möglichkeit, einen eingehenden Benutzer basierend auf verschiedenen Authentifizierungsschemas zu akzeptieren oder abzulehnen.
PlugInModules/AuthorizationPlugin/Name Gibt den Anzeigenamen an, der für das Plug-In verwendet werden soll. Wenn vom Plug-In ein Fehler zurückgegeben wird, wird dieser Name in die Fehler-XML-Datei eingedrung, die an die Clientanwendung zurückgegeben wird. Der Name gilt für kein bestimmtes Gebietsschema.
PlugInModules/AuthorizationPlugin/Filename Gibt den Dateinamen des Autorisierungs-Plug-Ins an. Alle Umgebungsvariablen, die in diesem Eintrag enthalten sind, werden basierend auf der Identität erweitert, unter der der IIS-Host ausgeführt wird, z. B. Netzwerkdienst. Der Standardwert für diesen Eintrag ist leer, was bedeutet, dass kein Autorisierungs-Plug-In verwendet wird.
PlugInModules/AuthorizationPlugin/SDKVersion Gibt die Version des Software Development Kits (SDK) an, für die ein bestimmtes Plug-In geschrieben wurde. Dieses Element muss auf 1 festgelegt werden.
PlugInModules/AuthorizationPlugin/SupportsQuota Gibt an, ob das Autorisierungs-Plug-In Kontingente unterstützt.
PlugInModules/OperationsPlugins/Name Gibt den Anzeigenamen an, der für das Plug-In verwendet werden soll. Wenn vom Plug-In ein Fehler zurückgegeben wird, wird dieser Name in die Fehler-XML-Datei eingedrung, die an die Clientanwendung zurückgegeben wird. Der Name gilt für kein bestimmtes Gebietsschema.
PlugInModules/OperationsPlugins/FileName Gibt den Dateinamen des Vorgangs-Plug-Ins an. Alle Umgebungsvariablen, die in diesem Eintrag gespeichert werden, werden im Kontext des Benutzers erweitert, wenn eine Anforderung einkommt. Jeder Benutzer kann über eine andere Version derselben Umgebungsvariablen verfügen, sodass jeder Benutzer ein anderes Plug-In erhalten kann. Dieser Eintrag darf nicht leer sein und muss auf ein gültiges Plug-In verweisen.
PlugInModules/OperationsPlugins/SDKVersion Gibt die Version des SDK an, für die ein bestimmtes Plug-In geschrieben wurde. Dieses Element muss auf 1 festgelegt werden.
PlugInModules/OperationsPlugins/XmlRenderingType Konfiguriert das Format, in dem XML über das WSMAN _ DATA-Objekt an Plug-Ins übergeben wird. XmlRenderingType ist auf text festgelegt. Eingehende XML-Daten sind in einer WSMAN DATA TYPE TEXT-Struktur enthalten, die _ den XML-Code als _ _ PCWSTR-Speicherpuffer darstellt.
PlugInModules/OperationsPlugins/InitializationParameters Dieser Knoten ist optional und ermöglicht es einem Plug-In, zusätzlichen XML-Code zu konfigurieren, der an die WSManPluginStartup-Methode übergeben wird. Die meisten Plug-Ins benötigen diese zusätzlichen Informationen nicht. Wenn jedoch ein Plug-In in mehr als einem Szenario verwendet werden muss, das eine andere Laufzeitsemantik erfordert, bietet dieser XML-Code dem Plug-In die flexibilität, dies zu tun.
PlugInModules/OperationsPlugins/Resources Gibt eine Liste der Ressourcen-URIs an, die dieses Plug-In unterstützt. Es muss mindestens ein ResourceUri-Eintrag angegeben werden. Andernfalls wird der XML-Code abgelehnt.
PlugInModules/OperationsPlugins/Resources/Resource Stellt eine einzelne Ressourcen-URI-Konfiguration dar.
PlugInModules/OperationsPlugins/Resources/Resource/ResourceUri Gibt einen einzelnen Ressourcen-URI entweder vollständig oder als partielle Übereinstimmungszeichenfolge basierend auf dem ExactMatch-Attribut an. Wenn ExactMatch nicht vorhanden ist, wird standardmäßig False verwendet. Dies bedeutet, dass der WinRM SOAP-Prozessor eine partielle Übereinstimmung mit dem Anfang des Ressourcen-URI vorträgt und ihn bei einer Übereinstimmung an das Plug-In überträgt. Das SupportsOptions-Attribut kann angegeben werden, wenn für diesen Ressourcen-URI Optionen übergeben werden dürfen. Standardmäßig werden keine Optionen unterstützt, und wenn in der Clientanforderung eine vorhanden ist, wird ein Fehler zurückgegeben. Wenn Optionen vom Plug-In unterstützt werden, ist es wichtig, dass das Plug-In den richtigen Fehler zurückgibt, wenn eine Option vorhanden ist, die das Plug-In nicht versteht, wenn das mustUnderstand-Flag auf TRUE festgelegt ist.
PlugInModules/OperationsPlugins/Resource/Capability Gibt eine Funktion an, die für diesen Ressourcen-URI verfügbar ist. Es gibt einen Eintrag für jeden unterstützten Vorgangstyp. Die folgenden Optionen sind verfügbar:
Erhalten
Get-Vorgänge werden für den Ressourcen-URI unterstützt. Das Attribut SupportFragment wird verwendet, wenn der Get-Vorgang das Konzept unterstützt. Das SupportFiltering-Attribut ist ungültig und sollte auf False festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn shell-Vorgänge ebenfalls unterstützt werden.
Put
Put-Vorgänge werden für den Ressourcen-URI unterstützt. Das SupportFragment-Attribut wird verwendet, wenn der Put-Vorgang das Konzept unterstützt. Das SupportFiltering-Attribut ist ungültig und sollte auf False festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn shell-Vorgänge ebenfalls unterstützt werden.
Erstellen
Erstellungsvorgänge werden für den Ressourcen-URI unterstützt. Das Attribut SupportFragment wird verwendet, wenn der Erstellungsvorgang das Konzept unterstützt. Das SupportFiltering-Attribut ist ungültig und sollte auf False festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn shell-Vorgänge ebenfalls unterstützt werden.
Löschen
Löschvorgänge werden für den Ressourcen-URI unterstützt. Das Attribut SupportFragment wird verwendet, wenn der Löschvorgang das Konzept unterstützt. Das SupportFiltering-Attribut ist ungültig und sollte auf False festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn shell-Vorgänge ebenfalls unterstützt werden.
Invoke
Aufrufvorgänge werden für den Ressourcen-URI unterstützt. Das SupportFragment-Attribut wird für Aufrufvorgänge nicht unterstützt und sollte auf False festgelegt werden. Das SupportFiltering-Attribut ist ungültig und sollte auf False festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn shell-Vorgänge ebenfalls unterstützt werden.
Aufzählen
Aufzählvorgänge werden für den Ressourcen-URI unterstützt. Das SupportFragment-Attribut wird für Aufzählvorgänge nicht unterstützt und sollte auf False festgelegt werden. Das SupportFiltering-Attribut ist gültig, und wenn das Plug-In filtert, sollte dieses Attribut auf True festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn shell-Vorgänge ebenfalls unterstützt werden.
Abonnieren
Subscribe-Vorgänge werden für den Ressourcen-URI unterstützt. Das SupportFragment-Attribut wird für Abonnierungsvorgänge nicht unterstützt und sollte auf False festgelegt werden. Das SupportFiltering-Attribut ist ungültig und sollte auf False festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn shell-Vorgänge ebenfalls unterstützt werden.
Shell
Shellvorgänge werden für den Ressourcen-URI unterstützt. Das SupportFragment-Attribut wird für Shellvorgänge nicht unterstützt und sollte auf False festgelegt werden. Das SupportFiltering-Attribut ist ungültig und sollte auf False festgelegt werden. Diese Funktion ist für einen Ressourcen-URI nicht gültig, wenn auch andere Vorgangsfunktionen unterstützt werden. Wenn eine Shell-Vorgangsfunktion für einen Ressourcen-URI konfiguriert ist, werden get-, put-, create-, delete-, invoke- und enumerate-Vorgänge intern innerhalb des WinRM-Diensts verarbeitet, um Shells zu verwalten. Daher kann das Plug-In die Vorgänge selbst nicht behandeln.

Beispiel für wsmanconfig _schema.xml Datei

Während der Einrichtung wird eine XML-Datei mit dem Namen wsmanconfigschema.xml, die den folgenden Inhalt enthält, _ im IIS-Schemaverzeichnis gelöscht:

<configSchema>
 <sectionSchema name="system.webServer/system.management.wsmanagement.config">
  <element name="OperationsConfiguration">
   <attribute name="MaxEnvelopeSizeKB" 
              type="uint" 
              defaultValue="150" 
              validationType="integerRange" 
              validationParameter="32,4294967295"/>
   <attribute name="MaxOperationTimeoutSeconds" 
              type="uint" 
              defaultValue="60" 
              validationType="integerRange" 
              validationParameter="1,4294967295"/>
   <attribute name="MaxEnumerateIdleTimeoutSeconds" 
              type="uint" 
              defaultValue="60" 
              validationType="integerRange" 
              validationParameter="1,4294967295"/>
   <attribute name="MaxSubscribeIdleTimeoutSeconds" 
              type="uint" 
              defaultValue="60" 
              validationType="integerRange" 
              validationParameter="1,4294967295"/>
   <attribute name="MaxShellIdleTimeoutMinutes" 
              type="uint" 
              defaultValue="15" 
              validationType="integerRange" 
              validationParameter="0,4294967295"/>
   <attribute name="QuotaRefreshIntervalSeconds" 
              type="uint" 
              defaultValue="900" 
              validationType="integerRange" 
              validationParameter="0,4294967295"/>
   <attribute name="QuotaSystemWindowSeconds" 
              type="uint" 
              defaultValue="2" 
              validationType="integerRange" 
              validationParameter="0,4294967295"/>
   <attribute name="QuotaSystemWindowOperations" 
              type="uint" 
              defaultValue="1000" 
              validationType="integerRange" 
              validationParameter="0,4294967295"/>
  </element>
  <element name="PluginModules">
   <collection addElement="AuthorizationPlugin">
    <attribute name="Name" type="string" isUniqueKey="true" required="true" validationType="nonEmptyString"/>
    <attribute name="Filename" type="string" required="true" validationType="nonEmptyString"/>
    <attribute name="SDKVersion" type="uint" required="true"/>
    <attribute name="SupportsQuota" type="bool" defaultValue="false"/>
   </collection>
   <element name="OperationsPlugins">
    <collection addElement="Plugin">
     <attribute name="Name" type="string" isUniqueKey="true" required="true" validationType="nonEmptyString"/>
     <attribute name="Filename" type="string" required="true" validationType="nonEmptyString"/>
     <attribute name="SDKVersion" type="uint" required="true"/>
     <attribute name="XmlRenderingType" type="enum" defaultValue="text">
      <enum name="text" value="1"/>
      <enum name="XmlReader" value="2"/>
     </attribute>
     <attribute name="Enabled" type="bool" defaultValue="true"/>
     <element name="InitializationParameters">
      <collection addElement="Param">
       <attribute name="Name" type="string" isUniqueKey="true" required="true" validationType="nonEmptyString"/>
       <attribute name="Value" type="string" required="true" validationType="nonEmptyString"/>
      </collection>
     </element>
     <element name="Resources">
      <collection addElement="Resource">
       <attribute name="ResourceUri" type="string" isUniqueKey="true" required="true" validationType="nonEmptyString"/>
       <attribute name="SupportsOptions" type="bool" defaultValue="false"/>
       <attribute name="ExactMatch" type="bool" defaultValue="false"/>
       <collection addElement="Capability">
        <attribute name="Type" type="enum" isUniqueKey="true" required="true">
         <enum name="Get" value="1"/>
         <enum name="Put" value="2"/>
         <enum name="Create" value="3"/>
         <enum name="Delete" value="4"/>
         <enum name="Invoke" value="5"/>
         <enum name="Enumerate" value="6"/>
         <enum name="Subscribe" value="7"/>
         <enum name="Shell" value="8"/>
        </attribute>
        <attribute name="SupportsFragment" type="bool" default="false"/>
        <attribute name="SupportsFiltering" type="bool" default="false"/>
       </collection>
      </collection>
     </element>
    </collection>
   </element>
  </element>
 </sectionSchema>
</configSchema>

Lesen der IIS-Hostkonfiguration

Die IIS-Hostkonfiguration wird während des Startprozesses des SOAP-Prozessors in der gehosteten Anwendung gelesen. Da web.config Dateien manuell bearbeitet werden können und daher anfällig für Schemavalidierungsfehler sind, können Beim Lesen einer Konfiguration Probleme auftreten. Während eines Konfigurationslese- oder Überprüfungsfehlers kann die gehostete Anwendung nicht gestartet werden und gibt eine entsprechende Fehlermeldung an den Client zurück. Ein Ereignis wird protokolliert, das eine ausführliche Beschreibung der Ursache des Fehlers enthält.

Häufige Fehler sind:

  • Zugriff verweigert
  • Ungültige XML-Konfigurationsdatei
  • Kein Plug-In konfiguriert (mindestens eines ist erforderlich)

Die Standard-Plug-Ins sind nicht standardmäßig konfiguriert. Sie müssen explizit in der web.config konfiguriert werden, bevor sie Anforderungen empfangen.

Aufzählen von Plug-Ins für den WinRM-Dienst

Der folgende Befehl veranschaulicht die Verwendung des Hilfsprogramms winrm, um zu bestimmen, welche Plug-Ins im WinRM-Dienst verfügbar sind: winrm enumerieren winrm/config/plugin -format:pretty.