3

一点背景。我正在使用 .NET Framework 4 使用 C#。我的绑定目前WsHttpBinding没有安全性。我有一个 WCF 客户端,它每秒左右向 WCF 服务器报告一次心跳。这个心跳只是一个无符号整数。

我拉了几分钟网线,然后重新连接。所有丢失的心跳值都会涌入。什么 WCF 配置属性导致了这种情况发生?我希望这些消息会被丢弃,而我只会收到最新的心跳。

4

2 回答 2

2

根据描述,这听起来可能是由于客户端中 WCF 服务的超时时间过长。

由于请求是异步的,并且您之前已经与服务器建立了连接,我预计这将是由于发送超时。

这是关于WCF 中的超时及其默认值的一个很好的 MSDN 博客条目。

于 2012-08-01T17:11:09.567 回答
1

这很可能是因为您没有为服务指定实例化模式

如果不是,那么它将默认为每个会话。这意味着在幕后 WCF 运行时正在实现一种称为WS-ReliableMessaging的 WS-* 规范,该规范试图保证一旦建立会话就可以在消费者和服务之间传递消息。

我想如果您等待很长时间(我认为默认为 10 分钟),您将开始看到丢失消息的证据。

或者,如果您使用每次调用实例模式配置您的服务,我想您不会看到这种行为。

于 2012-08-01T17:43:24.140 回答