Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Windows Communication Foundation (WCF) inclut plusieurs liaisons fournies par le système qui vous permettent de configurer certaines des propriétés des éléments de liaison sous-jacents, mais pas toutes les propriétés. Cette rubrique montre comment définir des propriétés sur les éléments de liaison pour créer une liaison personnalisée.
Pour plus d’informations sur la création et la configuration directe d’éléments de liaison sans utiliser les liaisons fournies par le système, consultez Liaisons personnalisées.
Pour plus d’informations sur la création et l’extension de liaisons personnalisées, consultez Extension des liaisons.
Dans WCF, toutes les liaisons sont constituées d’éléments de liaison. Chaque élément de liaison dérive de la BindingElement classe. Liaisons fournies par le système, telles que BasicHttpBinding, créent et configurent leurs propres éléments de liaison. Cette rubrique vous montre comment accéder aux propriétés de ces éléments de liaison et les modifier, qui ne sont pas directement exposées sur la liaison ; plus précisément, la BasicHttpBinding classe.
Les éléments de liaison individuels sont contenus dans une collection représentée par la BindingElementCollection classe et sont ajoutés dans cet ordre : flux de transaction, session fiable, sécurité, duplex composite, unidirectionnel, sécurité de flux, encodage de message et transport. Notez que tous les éléments de liaison répertoriés ne sont pas obligatoires dans chaque liaison. Les éléments de liaison définis par l’utilisateur peuvent également apparaître dans cette collection d’éléments de liaison et doivent apparaître dans le même ordre que décrit précédemment. Par exemple, un transport défini par l’utilisateur doit être le dernier élément de la collection d’éléments de liaison.
La BasicHttpBinding classe contient trois éléments de liaison :
Élément de liaison de sécurité facultatif, soit la AsymmetricSecurityBindingElement classe utilisée avec le transport HTTP (sécurité au niveau du message) soit la TransportSecurityBindingElement classe, qui est utilisée lorsque la couche de transport fournit la sécurité, auquel cas le transport HTTPS est utilisé.
Élément de liaison d’encodeur de message requis, soit TextMessageEncodingBindingElement ou MtomMessageEncodingBindingElement.
Élément de liaison de transport requis, soit HttpTransportBindingElement, ou HttpsTransportBindingElement.
Dans cet exemple, nous créons une instance de la liaison, générons une liaison personnalisée à partir de celle-ci, examinons les éléments de liaison dans la liaison personnalisée et, lorsque nous trouvons l’élément de liaison HTTP, nous définissons sa propriété KeepAliveEnabledfalse. La KeepAliveEnabled propriété n’est pas exposée directement sur le BasicHttpBinding; nous devons donc créer une liaison personnalisée pour accéder à l’élément de liaison et définir cette propriété.
Pour modifier une liaison fournie par le système
Créez une instance de la BasicHttpBinding classe et définissez son mode de sécurité au niveau du message.
// Create an instance of the T:System.ServiceModel.BasicHttpBinding // class and set its security mode to message-level security. BasicHttpBinding binding = new BasicHttpBinding(); binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate; binding.Security.Mode = BasicHttpSecurityMode.Message;' Create an instance of the T:System.ServiceModel.BasicHttpBinding ' class and set its security mode to message-level security. Dim binding As New BasicHttpBinding() With binding.Security .Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate .Mode = BasicHttpSecurityMode.Message End WithCréez une liaison personnalisée à partir de la liaison et créez une BindingElementCollection classe à partir de l’une des propriétés de la liaison personnalisée.
// Create a custom binding from the binding CustomBinding cb = new CustomBinding(binding); // Get the BindingElementCollection from this custom binding BindingElementCollection bec = cb.Elements();' Create a custom binding from the binding Dim cb As New CustomBinding(binding) ' Get the BindingElementCollection from this custom binding Dim bec = cb.ElementsParcourez la classe BindingElementCollection et, lorsque vous trouvez la classe HttpTransportBindingElement, définissez sa propriété KeepAliveEnabled sur
false.// Loop through the collection, and when you find the HTTP binding element // set its KeepAliveEnabled property to false foreach (BindingElement be in bec) { Type thisType = be.GetType(); Console.WriteLine(thisType); if (be is HttpTransportBindingElement) { HttpTransportBindingElement httpElement = (HttpTransportBindingElement)be; Console.WriteLine($"\tBefore: HttpTransportBindingElement.KeepAliveEnabled = {httpElement.KeepAliveEnabled}"); httpElement.KeepAliveEnabled = false; Console.WriteLine($"\tAfter: HttpTransportBindingElement.KeepAliveEnabled = {httpElement.KeepAliveEnabled}"); } }' Loop through the collection, and when you find the HTTP binding element ' set its KeepAliveEnabled property to false For Each be In bec Dim thisType = be.GetType() Console.WriteLine(thisType) If TypeOf be Is HttpTransportBindingElement Then Dim httpElement As HttpTransportBindingElement = CType(be, HttpTransportBindingElement) Console.WriteLine(Constants.vbTab & "Before: HttpTransportBindingElement.KeepAliveEnabled = {0}", httpElement.KeepAliveEnabled) httpElement.KeepAliveEnabled = False Console.WriteLine(vbTab & "After: HttpTransportBindingElement.KeepAliveEnabled = {0}", httpElement.KeepAliveEnabled) End If Next be