一点背景。我正在使用 .NET Framework 4 使用 C#。我的绑定目前WsHttpBinding
没有安全性。我有一个 WCF 客户端,它每秒左右向 WCF 服务器报告一次心跳。这个心跳只是一个无符号整数。
我拉了几分钟网线,然后重新连接。所有丢失的心跳值都会涌入。什么 WCF 配置属性导致了这种情况发生?我希望这些消息会被丢弃,而我只会收到最新的心跳。
一点背景。我正在使用 .NET Framework 4 使用 C#。我的绑定目前WsHttpBinding
没有安全性。我有一个 WCF 客户端,它每秒左右向 WCF 服务器报告一次心跳。这个心跳只是一个无符号整数。
我拉了几分钟网线,然后重新连接。所有丢失的心跳值都会涌入。什么 WCF 配置属性导致了这种情况发生?我希望这些消息会被丢弃,而我只会收到最新的心跳。
根据描述,这听起来可能是由于客户端中 WCF 服务的超时时间过长。
由于请求是异步的,并且您之前已经与服务器建立了连接,我预计这将是由于发送超时。
这是关于WCF 中的超时及其默认值的一个很好的 MSDN 博客条目。
这很可能是因为您没有为服务指定实例化模式。
如果不是,那么它将默认为每个会话。这意味着在幕后 WCF 运行时正在实现一种称为WS-ReliableMessaging的 WS-* 规范,该规范试图保证一旦建立会话就可以在消费者和服务之间传递消息。
我想如果您等待很长时间(我认为默认为 10 分钟),您将开始看到丢失消息的证据。
或者,如果您使用每次调用实例模式配置您的服务,我想您不会看到这种行为。