<serviceHostingEnvironment>

Cet élément définit le type instancié par l'environnement d'hébergement de service correspondant à un transport particulier. Si cet élément est vide, c'est le type par défaut qui est utilisé. Cet élément ne peut être utilisé qu'au niveau des fichiers de configuration de l'application ou de l'ordinateur.

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment>

Syntaxe

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

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut Description
aspNetCompatibilityEnabled Valeur booléenne indiquant si le mode de compatibilité ASP.NET a été activé pour l'application actuelle. Par défaut, il s’agit de false.

Quand cet attribut est défini sur true, les demandes transmises aux services WCF (Windows Communication Foundation) transitent par le pipeline HTTP ASP.NET, et les communications via des protocoles non HTTP sont interdites. Pour plus d’informations, consultez Services WCF et ASP.NET.
minFreeMemoryPercentageToActivateService Entier indiquant la quantité minimale de mémoire disponible nécessaire au système pour permettre l’activation d’un service WCF. Attention : Conférer à cet attribut une confiance partielle dans le fichier web.config d’un service WCF provoque une exception SecurityException pendant l’exécution du service.
multipleSiteBindingsEnabled Valeur booléenne qui spécifie si plusieurs liaisons IIS par site sont autorisées.

Les services IIS se composent de sites Web, qui sont des conteneurs d'applications virtuelles contenant des répertoires virtuels. L’application dans un site est accessible par le biais d’une ou de plusieurs liaisons IIS. Une liaison IIS fournit deux informations : un protocole de liaison et des informations de liaison. Le protocole de liaison définit le schéma selon lequel la communication est établie et les informations de liaison sont les informations utilisées pour accéder au site. HTTP peut être un exemple de protocole de liaison, tandis que les informations de liaison peuvent contenir une adresse IP, un port, un en-tête d'hôte, etc.

IIS prend en charge la spécification de plusieurs liaisons IIS par site, ce qui entraîne plusieurs adresses de base par schéma. Cependant, un service WCF (Windows Communication Foundation) hébergé sur un site n’autorise la liaison qu’avec une seule baseAddress par schéma.

Pour autoriser plusieurs liaisons IIS par site pour un service WCF (Windows Communication Foundation), définissez cet attribut sur true. Notez que la spécification de plusieurs liaisons de site est prise en charge uniquement pour le protocole HTTP. L'adresse des points de terminaison dans le fichier de configuration doit être un URI complet.

Éléments enfants

Élément Description
<baseAddressPrefixFilters> Collection des éléments de configuration qui spécifient des filtres de préfixe pour les adresses de base utilisée par l’hôte de service.
<serviceActivations> Section de configuration qui décrit les paramètres d'activation.
<transportConfigurationTypes> Collection des éléments de configuration identifiant le type d’un transport particulier.

Éléments parents

Élément Description
serviceModel Élément racine de tous les éléments de configuration Windows Communication Foundation (WCF).

Notes

Par défaut, les services WCF sont exécutés conjointement à ASP.NET dans les domaines d'application hébergés (AppDomain). Bien que WCF et ASP.NET puissent coexister sur le même domaine AppDomain, les demandes WCF ne sont pas traitées par défaut par le pipeline HTTP d'ASP.NET. En conséquence, plusieurs éléments de la plate-forme d'application ASP.NET ne sont pas disponibles pour les services WCF. Cela comprend

  • Autorisation de l'URL/du fichier ASP.NET

  • Emprunt d'identité ASP.NET

  • État de session basé sur les cookies

  • HttpContext.Current

  • Extensibilité de pipeline via HttpModule personnalisé

Si vos services WCF doivent fonctionner dans le contexte ASP.NET et communiquer uniquement via HTTP, vous pouvez utiliser le mode de compatibilité ASP.NET de WCF. Ce mode est activé lorsque l'attribut aspNetCompatibilityEnabled a la valeur true au niveau de l'application. Les implémentations de service doivent déclarer leur capacité de fonctionner en mode de compatibilité à l'aide de la classe AspNetCompatibilityRequirementsAttribute. Lorsque le mode de compatibilité est activé :

  • L'autorisation de l'URL/du fichier ASP.NET est appliquée avant l'autorisation WCF. Une décision d'autorisation est basée sur l'identité de la demande au niveau du transport. Les identités au niveau du message sont ignorées.

  • Les opérations de service WCF commencent à s'exécuter dans le contexte d'emprunt d'identité ASP.NET. Si les emprunts d'identité ASP.NET et WCF sont tous deux activés pour un service spécifique, c'est le contexte d'emprunt d'identité WCF qui est appliqué.

  • HttpContext.Current peut être utilisé à partir du code de service WCF ; cette opération permet d'empêcher l'exposition des points de terminaison non-HTTP.

  • Les demandes WCF sont traitées par le pipeline ASP.NET. Les HttpModules ayant été configurés pour agir sur les requêtes entrantes peuvent également traiter des demandes WCF. Ils peuvent inclure des composants de plate-forme ASP.NET (par exemple, SessionStateModule), ainsi que des modules tiers personnalisés.

Exemple

L'exemple de code suivant indique comment activer le Mode de compatibilité ASP.

Code

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

Voir aussi