ContextExchangeMechanism Énumération
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Indique si le mécanisme utilisé pour échanger le contexte d'une conversation entre un client et un service sera un cookie HTTP ou un en-tête SOAP.
public enum class ContextExchangeMechanism
public enum ContextExchangeMechanism
type ContextExchangeMechanism =
Public Enum ContextExchangeMechanism
- Héritage
Champs
ContextSoapHeader | 0 | Un en-tête SOAP est utilisé pour échanger le contexte. Il s'agit du mécanisme d'échange par défaut. |
HttpCookie | 1 | Un cookie HTTP est utilisé pour échanger le contexte. |
Remarques
Utilisez la propriété ContextExchangeMechanism ou le constructeur ContextBindingElement(ProtectionLevel, ContextExchangeMechanism) pour spécifier la valeur du ContextExchangeMechanism correspondant à une conversation entre un client et service.
Les points de terminaison de service qui requièrent la prise en charge du protocole d'échange de contexte peuvent rendre cette demande explicite dans leur stratégie publiée. Un point de terminaison est capable de publier des assertions de stratégie qui représentent la demande de prise en charge du protocole d'échange de contexte par le client au niveau du SOAP ou qui requièrent l'activation de la prise en charge des cookies HTTP. La génération de ces assertions dans la stratégie sur le service est contrôlée par la valeur de la propriété ContextExchangeMechanism de la façon suivante :
Pour HttpCookie, l’assertion suivante est générée :
<HttpUseCookie xmlns="http://schemas.xmlsoap.org/soap/http"/>
Pour ContextSoapHeader, l’assertion suivante est générée :
<IncludeContext xmlns="http://schemas.microsoft.com/ws/2006/05/context" protectionLevel="Sign" />
L’énumération HttpCookie est implémentée au niveau de la couche de transport. Cette opération peut être utilisée dans le cadre d'une communication simplex, où le client effectue une demande initiale et où le contexte est indiqué par le service dans la réponse correspondante. Tous les messages échangés ensuite entre le service et le client jusqu'à la fin de la conversation contiennent ce contexte. Pour les points de terminaison de service qui utilisent un transport HTTP et les clients qui acceptent d’autoriser l’utilisation de cookies HTTP, l’énumération HttpCookie peut être utilisée pour échanger le contexte de l’application. Lorsque les cookies HTTP sont utilisés pour propager le contexte, ils doivent être protégés à l'aide de la sécurité de transport. Ce mécanisme ne peut pas être utilisé avec les transports non-HTTP.
L’énumération ContextSoapHeader fournit une alternative qui est implémentée dans un canal de contexte personnalisé et qui peut être utilisée avec des transports non-HTTP et d’autres modèles d’échange de messages, comme requête-réponse et une session duplex. Ce protocole d’échange de contexte fournit un équivalent (basé sur SOAP) de la fonctionnalité que les cookies HTTP offrent à la couche de transport. Il introduit un nouvel en-tête SOAP wsc:Context
afin de représenter les informations de contexte. Cet en-tête wsc:Context
doit être protégé de toute modification lors de son transfert pour la même raison que les en-têtes WS-Addressing : lorsqu'ils arrivent à destination, ce sont eux qui distribuent le message aux instances de workflow correctes. L'en-tête wsc:Context
est donc requis pour être signé numériquement soit au niveau SOAP, soit au niveau du transport, lorsque la liaison assure une fonction de protection des messages.
La couche du canal communique le contexte à partir de la couche d'application ou vers cette dernière en utilisant ContextMessageProperty.