Configuration d'un emplacement de réception WCF-WSHttp
Vous pouvez configurer un emplacement de réception WCF-WSHttp par programme ou à l'aide de la console Administration de BizTalk.
Propriétés de configuration
Le modèle objet de l'Explorateur BizTalk permet de créer et de configurer les emplacements de réception par programme. Le modèle objet Explorer BizTalk expose l’interface de configuration de l’emplacement de réceptionIReceiveLocation qui a une propriété de lecture/écriture TransportTypeData. Cette propriété accepte le jeu de propriétés de configuration de l'emplacement de réception WCF-WSHttp sous la forme d'une chaîne XML composée d'une paire nom/valeur. Pour définir cette propriété dans le modèle objet BizTalk Explorer, vous devez définir la propriété InboundTransportLocation de l’interface IReceiveLocation.
La propriété TransportTypeData de l’interface IReceiveLocation n’a pas besoin d’être définie. De cette manière, l'adaptateur WCF-WSHttp utilise les valeurs par défaut pour la configuration de l'emplacement de réception WCF-WSHttp, comme indiqué dans le tableau suivant.
Le tableau suivant répertorie les propriétés de configuration que vous pouvez définir dans le modèle objet de l'Explorateur BizTalk pour l'emplacement de réception WCF-WSHttp.
Nom de la propriété | Type | Description |
---|---|---|
Identité | Blob XML Exemple : <identity> <userPrincipalName value="username@contoso.com » /> </Identité> |
Spécifiez l'identité du service fourni par cet emplacement de réception. Les valeurs qui peuvent être spécifiées pour la propriété Identity diffèrent en fonction de la configuration de la sécurité. Ces paramètres permettent au client d'authentifier cet emplacement de réception. Lors du processus d'établissement de liaison entre le client et le service, l'infrastructure WCF (Windows Communication Foundation) garantit que l'identité du service attendu correspond aux valeurs de cet élément. La valeur par défaut est une chaîne vide. |
OpenTimeout | System.TimeSpan | Spécifier une valeur de période qui indique l'intervalle de temps donné pour qu'une opération d'ouverture de canal soit réalisée. Valeur par défaut : 00:01:00 |
SendTimeout | System.TimeSpan | Spécifier une valeur de période qui indique l'intervalle de temps donné pour qu'une opération d'envoi soit réalisée. En cas d'utilisation d'un port de réception de requête-réponse, cette valeur indique une période pour la réalisation de l'intégralité de l'interaction, même si le client renvoie un message volumineux. Valeur par défaut : 00:01:00 |
CloseTimeout | System.TimeSpan | Spécifier une valeur de période qui indique l'intervalle de temps donné pour qu'une opération de fermeture de canal soit réalisée. Valeur par défaut : 00:01:00 |
MaxReceivedMessageSize | Integer | Spécifiez la taille maximale en octets d'un message (en-têtes inclus) et pouvant être reçu sur le câble. La taille des messages est limitée par la quantité de mémoire allouée pour chacun d'eux. Vous pouvez vous servir de cette propriété afin de limiter les expositions aux attaques de type refus de service. Valeur par défaut : 65536 |
MessageEncoding | Énumération - Texte : utilisez un encodeur de message texte. - Mtom : utilisez un encodeur MTOM (Message Transmission Optimization Mechanism 1.0). |
Indiquer l’encodeur utilisé pour coder le message SOAP. Valeur par défaut : Texte |
TextEncoding | Énumération - unicodeFFF : encodage Unicode BigEndian. - utf-16 : encodage 16 bits. - utf-8 - Encodage 8 bits |
Spécifiez l’encodage du jeu de caractères à utiliser pour émettre des messages sur la liaison lorsque la propriété MessageEncoding a la valeur Text. Valeur par défaut : utf-8 |
EnableTransaction | Boolean | Spécifiez si un message est envoyé à la base de données MessageBox à l'aide de la transaction transmise depuis des clients. Si cette propriété a la valeur True , les clients doivent envoyer des messages à l’aide du protocole WS-AtomicTransaction . Si les clients envoient des messages hors de l'étendue transactionnelle, cet emplacement de réception renvoie une exception aux clients et aucun message n'est interrompu.Cette option n'est disponible que pour les emplacements de réception unidirectionnels. Si les clients envoient des messages dans un contexte transactionnel d'emplacements de réception avec requête-réponse, une exception est renvoyée aux clients et aucun message n'est interrompu. Valeur par défaut : False |
MaxConcurrentCalls | Integer | Spécifier le nombre d'appels simultanés par instance de service unique. Les appels excédentaires sont mis en file d'attente. La plage de cette propriété s'étend de 1 à Int32.MaxValue. Valeur par défaut : 200 |
Securitymode | Énumération - Aucun - Message - Transport - TransportWithMessageCredential Pour plus d’informations sur les noms de membres de la propriété SecurityMode , consultez la propriété Mode de sécurité dans la boîte de dialogue Propriétés de transport WCF-WSHttp, Recevoir, onglet Sécurité dans l’aide de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs. |
Spécifier le type de sécurité utilisé. Valeur par défaut : Message |
TransportClientCredentialType | Énumération - Aucun - Base - Ntlm - Windows - Certificat Pour plus d’informations sur les noms de membres de la propriété TransportClientCredentialType , consultez la propriété Type d’informations d’identification du client de transport dans la boîte de dialogue Propriétés de transport WCF-WSHttp, Onglet Réception, Sécurité dans les instructions de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs. |
Spécifier le type d’informations d’identification à utiliser lors de l’authentification du client. Valeur par défaut : Windows |
MessageClientCredentialType | Énumération - Aucun - Windows - Nom d'utilisateur - Certificat Pour plus d’informations sur les noms des membres de la propriété MessageClientCredentialType , consultez la propriété Type d’informations d’identification du client Message dans la boîte de dialogue Propriétés de transport WCF-WSHttp, onglet Réception, Sécurité dans les conseils d’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs. |
Spécifier le type d'informations d'identification à utiliser lors de l'authentification du client à l'aide de la sécurité basée sur le message. Valeur par défaut : Windows |
AlgorithmSuite | Énumération Pour plus d’informations sur les noms des membres de la propriété AlgorithmSuite , consultez la propriété Suite d’algorithmes dans la boîte de dialogue Propriétés de transport WCF-WSHttp, Recevoir, onglet Sécurité dans l’aide de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs. |
Spécifier les algorithmes de chiffrement et Key Wrap du message. Ces algorithmes sont associés à ceux définis dans la spécification Security Policy Language (WS-SecurityPolicy). Valeur par défaut : Basic256 |
NegotiateServiceCredential | Boolean | Spécifiez si les informations d'identification du service sont générées au niveau du client hors bande ou sont obtenues à partir du service sur ce client via un processus de négociation. Ce type de négociation précède l'échange habituel de messages. Si la propriété MessageClientCredentialType est égale à None, Username ou Certificate, la définition de cette propriété sur False signifie que le certificat de service est disponible sur le client hors bande et que le client doit spécifier le certificat de service. Ce mode est interopérable avec les piles SOAP qui implémentent WS-Trust et WS-SecureConversation. Si la propriété MessageClientCredentialType est définie sur Windows, la définition de cette propriété sur False spécifie l’authentification Kerberos. Cela signifie que le client et le service doivent faire partie du même domaine Kerberos. Ce mode est interopérable avec les piles SOAP qui implémentent le profil de jeton Kerberos (comme défini dans OASIS WSS TC) ainsi que WS-Trust et WS-SecureConversation. Lorsque cette propriété a la valeur True, elle provoque une négociation SOAP .NET qui tunnelle l’échange SPNego sur les messages SOAP. Valeur par défaut : True |
EstablishSecurityContext | Boolean | Spécifiez si le canal de sécurité établit une session sécurisée. Une session sécurisée établit un jeton de contexte de sécurité (SCT) avant d'échanger les messages d'application. Valeur par défaut : True |
ServiceCertificate | String | Spécifier l'empreinte du certificat X.509 pour cet emplacement de réception permettant au client d'authentifier le service. Le certificat à utiliser pour cette propriété doit être installé dans mon magasin à l’emplacement Utilisateur actuel . Note: Vous devez installer le certificat de service dans l’emplacement Utilisateur actuel du compte d’utilisateur pour le gestionnaire de réception hébergeant cet emplacement de réception. La valeur par défaut est une chaîne vide. |
UseSSO | Boolean | Indiquez s'il faut utiliser l'authentification unique de l'entreprise pour extraire les informations d'identification du client afin d'émettre un ticket d'authentification unique. Pour plus d’informations sur les configurations de sécurité prenant en charge l’authentification unique, consultez la section « Enterprise Single Sign-On Supportability for the WCF-WSHttp Receive Adapter » dans la boîte de dialogue Propriétés de transport WCF-WSHttp, onglet Recevoir, Sécurité dans les conseils d’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs. |
InboundBodyLocation | Énumération - UseBodyElement : utilisez le contenu de l’élément SOAP Body d’un message entrant pour créer la partie corps du message BizTalk. Si l’élément Body a plusieurs éléments enfants, seul le premier élément devient la partie corps du message BizTalk. - UseEnvelope : créez la partie corps du message BizTalk à partir de l’enveloppe SOAP entière d’un message entrant. - UseBodyPath : utilisez l’expression de chemin du corps dans la propriété InboundBodyPathExpression pour créer la partie corps du message BizTalk. L’expression de chemin du corps est évaluée par rapport à l’élément enfant immédiat de l’élément SOAP Body d’un message entrant. Cette propriété est valide uniquement pour des ports de sollicitation-réponse. Pour plus d’informations sur l’utilisation de la propriété InboundBodyLocation , consultez Spécification du corps du message pour les adaptateurs WCF. |
Spécifiez la sélection des données pour l’élément SOAP Body des messages WCF entrants. Valeur par défaut : UseBodyElement |
InboundBodyPathExpression | String Pour plus d’informations sur l’utilisation de la propriété InboundBodyPathExpression , consultez Schéma et propriétés de la propriété adaptateurs WCF. |
Spécifiez l'expression de chemin de corps afin d'identifier une partie spécifique du message entrant utilisée pour créer le corps du message BizTalk. Cette expression de chemin de corps est évaluée par rapport à l’élément enfant immédiat du nœud SOAP Body d’un message entrant. Si cette expression de chemin de corps retourne plusieurs nœuds, seul le premier devient le corps du message BizTalk. Cette propriété est obligatoire si la propriété InboundBodyLocation a la valeur UseBodyPath. La valeur par défaut est une chaîne vide. |
InboundNodeEncoding | Énumération - Encodage Base64 - Base64. - Hexadécimal - Encodage hexadécimal. - Chaîne - Encodage de texte - UTF-8. - XML : les adaptateurs WCF créent le corps du message BizTalk avec le XML externe du nœud sélectionné par l’expression de chemin du corps dans InboundBodyPathExpression. |
Spécifiez le type d’encodage que l’adaptateur de réception WCF-WSHttp utilise pour décoder le nœud identifié par l’expression de chemin du corps spécifiée dans InboundBodyPathExpression. Cette propriété est obligatoire si la propriété InboundBodyLocation a la valeur UseBodyPath. Valeur par défaut : XML |
OutboundBodyLocation | Énumération - UseBodyElement : utilisez la partie corps du message BizTalk pour créer le contenu de l’élément SOAP Body pour un message de réponse sortant. - UseTemplate : utilisez le modèle fourni dans la propriété OutboundXMLTemplate pour créer le contenu de l’élément SOAP Body pour un message de réponse sortant. Pour plus d’informations sur l’utilisation de la propriété OutboundBodyLocation , consultez Spécification du corps du message pour les adaptateurs WCF. |
Spécifiez la sélection des données pour l’élément SOAP Body des messages WCF sortants. Cette propriété est valide uniquement pour des emplacements de réception de type requête-réponse. Valeur par défaut : UseBodyElement |
OutboundXMLTemplate | String Pour plus d’informations sur l’utilisation de la propriété OutboundXMLTemplate , consultez Spécification du corps du message pour les adaptateurs WCF. |
Spécifiez le modèle au format XML pour le contenu de l’élément SOAP Body d’un message de réponse sortant. Cette propriété est obligatoire si la propriété OutboundBodyLocation a la valeur UseTemplate. Cette propriété est valide uniquement pour des emplacements de réception de type requête-réponse. La valeur par défaut est une chaîne vide. |
SuspendMessageOnFailure | Boolean | Spécifier s'il faut interrompre le message de requête dont le traitement entrant a échoué en raison d'une erreur de pipeline de réception ou d'un échec de routage. Valeur par défaut : True |
IncludeExceptionDetailInFaults | Boolean | Spécifiez s'il faut inclure des informations sur l'exception gérée dans le détail des dysfonctionnements SOAP renvoyé au client à des fins de débogage. Valeur par défaut : False |
Configurer un emplacement de réception WCF-WSHttp avec la console d’administration BizTalk
Vous pouvez définir des variables d'emplacement de réception pour l'adaptateur WCF-WSHttp dans la console Administration de BizTalk. Si les propriétés ne sont pas définies pour l'emplacement de réception, les valeurs par défaut du gestionnaire de réception définies dans la console Administration de BizTalk sont utilisées.
Notes
Avant d'effectuer les procédures suivantes, vous devez avoir ajouté un port de réception. Pour plus d'informations, consultez la rubrique Création d'un port de réception.
Configurer des variables pour un emplacement de réception WCF-WSHttp
Dans la console Administration BizTalk, développez BizTalk Server Administration, Groupe BizTalk, Applications, puis l’application dans laquelle vous souhaitez créer un emplacement de réception.
Dans le volet gauche de la console Administration de BizTalk, cliquez sur le nœud Port de réception . Dans le volet droit, cliquez avec le bouton droit sur le port de réception associé à un emplacement de réception existant ou auquel associer un nouvel emplacement, puis cliquez sur Propriétés.
Dans la boîte de dialogue Propriétés du port de réception, dans le volet gauche, sélectionnez Emplacements de réception, puis dans le volet droit, double-cliquez sur un emplacement de réception existant ou cliquez sur Nouveaupour créer un emplacement de réception.
Dans la boîte de dialogue Propriétés de l’emplacement de réception, dans la section Transport en regard de Type, sélectionnez WCF-WSHttp dans la liste déroulante, puis cliquez sur Configurer.
Dans la boîte de dialogue Propriétés de transport WCF-WSHttp , sous l’onglet Général , configurez l’adresse du point de terminaison et l’identité du service pour l’emplacement de réception WCF-WSHttp. Pour plus d’informations sur l’onglet Général de la boîte de dialogue Propriétés de transport WCF-WSHttp , consultez la boîte de dialogue Propriétés de transport WCF-WSHttp, Recevoir, Onglet Général dans l’aide de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs.
Dans la boîte de dialogue Propriétés de transport WCF-WSHttp , sous l’onglet Liaison , configurez les propriétés de délai d’attente, d’encodage et de transaction. Pour plus d’informations sur l’onglet Liaison dans la boîte de dialogue Propriétés de transport WCF-WSHttp , consultez la boîte de dialogue Propriétés de transport WCF-WSHttp, Recevoir, onglet Liaison dans l’aide de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs.
Dans la boîte de dialogue Propriétés de transport WCF-WSHttp , sous l’onglet Sécurité , définissez les fonctionnalités de sécurité de l’emplacement de réception WCF-WSHttp. Pour plus d’informations sur l’onglet Sécurité de la boîte de dialogue Propriétés de transport WCF-WSHttp , consultez la boîte de dialogue Propriétés de transport WCF-WSHttp, Recevoir, onglet Sécurité dans l’aide de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs.
Dans la boîte de dialogue Propriétés de transport WCF-WSHttp , sous l’onglet Messages , spécifiez la sélection des données pour l’élément SOAP Body . Pour plus d’informations sur l’onglet Messages de la boîte de dialogue Propriétés de transport WCF-WSHttp , consultez la boîte de dialogue Propriétés de transport WCF-WSHttp, Onglet Recevoir, Messages dans l’aide de l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs.
Configurer un emplacement de réception WCF-WSHttp par programmation
Vous pouvez utiliser le format suivant pour définir les propriétés :
<CustomProps>
<InboundBodyPathExpression vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<UseSSO vt="11">0</UseSSO>
<MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
<SendTimeout vt="8">00:01:00</SendTimeout>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<SecurityMode vt="8">Message</SecurityMode>
<TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
<NegotiateServiceCredential vt="11">-1</NegotiateServiceCredential>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<TextEncoding vt="8">utf-8</TextEncoding>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<EstablishSecurityContext vt="11">-1</EstablishSecurityContext>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<ServiceCertificate vt="8" />
<MessageEncoding vt="8">Text</MessageEncoding>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
Le fragment de code suivant illustre la création d'un emplacement de réception WCF-WSHttp :
// Use BizTalk Explorer object model to create new WCF-WSHttp receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
<UseSSO vt=""11"">0</UseSSO>
<Identity vt=""8"">
<identity>
<userPrincipalName value=""username@contoso.com"" />
</identity>
</Identity>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication1001";
// Save
explorer.SaveChanges();
// Add a new one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-WSHttp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-WSHttp" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "/samplepath/sampleservice.svc";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-WSHttp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
Voir aussi
Publication des services WCF avec les adaptateurs de réception WCF isolés
Configuration d’IIS pour les adaptateurs de réception WCF isolés
Gestion des hôtes et des instances d'hôte BizTalk
Comment modifier les comptes de service et les mots de passe
Installation de certificats pour les adaptateurs WCF
Spécification du corps de message pour les adaptateurs WCF
Configuration de l’adaptateur WCF-WSHttp