Qu'est-ce qui se passe vraiment quand une personne appelle le Open méthode de IRequestChannel? Par exemple, si je le code suivant:WCF RequestChannel; Que se passe-t-il vraiment?
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>();
// using a netTcpBinding to a net.tcp://localhost:9999/Bar
IRequestChannel outchannel = factory.CreateChannel();
outchannel.Open(); // what happens here?
if (outchannel.State == CommunicationState.Opened)
{
success = true;
}
outchannel.Close();
Je semble obtenir des « faux positifs » sur certains services à des défaillances précises sur les autres. Je suppose que j'aurais toujours des faux positifs si cela ne permettait pas de vérifier que le canal était ouvert.
Une suggestion d'amélioration? Je souhaite éviter d'envoyer un message, car il ne s'agit que de tester la viabilité d'un service pour un test de diagnostic, mais je peux le faire si cela est nécessaire.
j'ai remarqué de notre fichier de configuration que les canaux qui renvoient les faux positifs utilisent la behaviorConfiguration suivante:
<binding name="secureNetTcpStream" maxBufferSize="2000000" maxReceivedMessageSize="2000000000" transferMode="Streamed" sendTimeout="00:05:00" receiveTimeout="14:00:00">
<readerQuotas maxStringContentLength="2000000000" maxArrayLength="2000000000" />
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
Je me demande si la configuration du comportement en flux continu est ce qui conduit à la projection IRequestChannel il est ouvert même lorsque l'hôte et le service sont indisponibles?