<serviceHostingEnvironment>

Dieses Element definiert den Typ, der von der Diensthostingumgebung für einen bestimmten Transport instanziiert wird. Falls dieses Element leer ist, wird der Standardtyp verwendet. Dieses Element kann nur über die Anwendungskonfigurationsdatei bzw. die Computerkonfigurationsdatei verwendet werden.

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment>

Syntax

<serviceHostingEnvironment aspNetCompatibilityEnabled="Boolean"
                           minFreeMemoryPercentageToActivateService="Integer"
                           multipleSiteBindingsEnabled="Boolean">
  <baseAddressPrefixFilters>
    <add prefix="string" />
  </baseAddressPrefixFilters>
  <serviceActivations>
    <add factory="String"
         service="String" />
  </serviceActivations>
  <transportConfigurationTypes>
    <add name="String"
         transportConfigurationType="String" />
  </transportConfigurationTypes>
</serviceHostingEnvironment>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.

Attribute

attribute BESCHREIBUNG
aspNetCompatibilityEnabled Ein boolescher Wert, der angibt, ob der ASP.NET-Kompatibilitätsmodus für die aktuelle Anwendung aktiviert wurde. Der Standardwert ist false.

Wenn dieses Attribut auf true festgelegt wird, fließen die Anforderungen an die Windows Communication Foundation (WCF)-Dienste durch die ASP.NET-HTTP-Pipeline, und die Kommunikation über Nicht-HTTP-Protokolle wird untersagt. Weitere Informationen finden Sie unter WCF-Dienste und ASP.NET.
minFreeMemoryPercentageToActivateService Eine ganze Zahl, die die Mindestmenge des freien Arbeitsspeichers angibt, der auf dem System zur Verfügung stehen sollte, bevor ein WCF-Dienst aktiviert werden kann. Vorsicht: Das Festlegen dieses Attributs zusammen mit teilweiser Vertrauenswürdigkeit in der „web.config“-Datei eines WCF-Diensts führt beim Ausführen des Diensts zu einer SecurityException.
multipleSiteBindingsEnabled Ein boolescher Wert, der angibt, ob mehrere IIS-Bindungen pro Website aktiviert sind.

IIS besteht aus Websites, die als Container für virtuelle Anwendungen fungieren, die virtuelle Verzeichnisse enthalten. Auf die Anwendung auf einer Website kann über eine oder mehrere IIS-Bindungen zugegriffen werden. IIS-Bindungen stellen zwei Angaben bereit: ein Bindungsprotokoll und Bindungsinformationen. Das Bindungsprotokoll definiert das Schema, das für die Kommunikation verwendet wird, und die Bindungsinformationen dienen dem Zugriff auf die Website. Ein Beispiel für ein Bindungsprotokoll kann HTTP sein, wohingegen Bindungsinformationen eine IP-Adresse, einen Port, einen Hostheader usw. enthalten können.

IIS unterstützt die Angabe mehrerer IIS-Bindungen pro Website, was zu mehreren Basisadressen pro Schema führt. Ein unter einer Website gehosteter Windows Communication Foundation (WCF)-Dienst ermöglicht die Bindung zu nur einem baseAddress-Element pro Schema.

Um mehrere IIS-Bindungen pro Website für einen Windows Communication Foundation (WCF)-Dienst zu aktivieren, legen Sie dieses Attribut auf true fest. Beachten Sie, dass mehrere Bindungen pro Website nur für das HTTP-Protokoll unterstützt werden. Die Adresse der Endpunkte in der Konfigurationsdatei muss ein vollständiger URI sein.

Untergeordnete Elemente

Element BESCHREIBUNG
<baseAddressPrefixFilters> Eine Auflistung der Konfigurationselemente, die den Präfixfilter für die vom Diensthost verwendeten Basisadressen angeben.
<serviceActivations> Ein Konfigurationsabschnitt, der Aktivierungseinstellungen beschreibt.
<transportConfigurationTypes> Eine Auflistung der Konfigurationselemente, die den Typ eines bestimmten Transports identifizieren.

Übergeordnete Elemente

Element BESCHREIBUNG
serviceModel Das Stammelement aller Windows Communication Foundation (WCF)-Konfigurationselemente.

Bemerkungen

WCF-Dienste werden in gehosteten Anwendungsdomänen (AppDomain) standardmäßig zusammen mit ASP.NET ausgeführt. Selbst wenn WCF und ASP.NET in derselben AppDomain gleichzeitig ausgeführt werden können, werden die WCF-Anforderungen nicht standardmäßig von der ASP.NET-HTTP-Pipeline verarbeitet. Folglich stehen einige Elemente der ASP.NET-Anwendungsplattform nicht für WCF-Dienste zur Verfügung. Dies sind:

  • ASP.NET-Datei-/URL-Autorisierung

  • ASP.NET-Identitätswechsel

  • Cookiebasierter Sitzungszustand

  • HttpContext.Current

  • Pipeline-Erweiterbarkeit über benutzerdefiniertes HttpModule

Falls Ihre WCF-Dienste im ASP.NET-Kontext funktionieren müssen und nur über HTTP kommunizieren, können Sie den ASP.NET-Kompatibilitätsmodus von WCF verwenden. Dieser Modus wird aktiviert, wenn das aspNetCompatibilityEnabled-Attribut auf Anwendungsebene auf true festgelegt ist. Die Dienstimplementierungen müssen die Möglichkeit, im Kompatibilitätsmodus ausgeführt zu werden, mit der AspNetCompatibilityRequirementsAttribute-Klasse deklarieren. Wenn der Kompatibilitätsmodus aktiviert ist,

  • wird vor der WCF-Autorisierung die ASP.NET-Datei-/URL-Autorisierung erzwungen. Eine Autorisierungsentscheidung basiert auf der Anforderungsidentität auf der Transportebene. Identitäten auf der Nachrichtenebene werden ignoriert.

  • beginnen die WCF-Dienstvorgänge mit der Ausführung im ASP.NET-Identitätswechselkontext. Falls sowohl der ASP.NET-Identitätswechsel als auch der WCF-Identitätswechsel für einen bestimmten Dienst aktiviert sind, gilt der WCF-Identitätswechselkontext.

  • kann HttpContext.Current im WCF-Dienstcode verwendet werden. Die Dienste werden daran gehindert, Nicht-HTTP-Endpunkte verfügbar zu machen.

  • werden die WCF-Anforderungen von der ASP.NET-Pipeline verarbeitet. HttpModules, die für eingehende Anforderungen konfiguriert wurden, können ebenfalls WCF-Anforderungen verarbeiten. Dazu gehören ASP.NET-Plattformkomponenten (z. B. SessionStateModule) sowie benutzerdefinierte Drittanbietermodule.

Beispiel

Das folgende Codebeispiel zeigt, wie der ASP-Kompatibilitätsmodus aktiviert wird.

Code

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

Siehe auch