当一个人调用IRequestChannel的Open方法时会发生什么?例如,如果我有以下代码:
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();
我似乎在某些服务上得到了“误报”,而在其他服务上却出现了准确的失败。如果这不能以某种方式验证通道是否打开,我会假设我总是会得到误报。
有什么改进建议吗?我想避免发送消息,因为这只是为了测试服务对诊断测试的可行性,但如果有必要,我可以。
我从我们的配置文件中注意到,返回误报的通道正在使用以下行为配置:
<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>
我想知道流行为配置是否导致 IRequestChannel 显示它是打开的,即使主机和服务不可用?