c# - 使用 WCF 回调时,客户端如何知道服务器是否已中断

标签 c# wcf service callback

如果我创建一个提供回调的 WCF 服务,并且我有多个客户端注册接收事件,这些客户端如何知道服务是否中断或关闭?目前他们只是悬而未决,等待一个永远不会触发的事件。

我想也许我可以实现某种轮询(这是我试图摆脱的)。但即使是轮询也似乎是一个糟糕的解决方案。例如,如果我每 30 秒轮询一次,但服务或应用程序池在下一次检查之前重新启动,那么客户端会认为一切正常,尽管服务器已丢失对它们的引用。

最佳答案

您可以利用 IClientChannel 上的各种事件来监视连接发生的情况。对于您的情况,Faulted 事件似乎是最合适的。但还有其他一些您可能会觉得有用的事件。

    _proxy.InnerChannel.Opening += OnChannelOpening;
    _proxy.InnerChannel.Opened += OnChannelOpened;
    _proxy.InnerChannel.Faulted += OnChannelFaulted;
    _proxy.InnerChannel.UnknownMessageReceived += OnChannelUnknownMessageReceived;
    _proxy.InnerChannel.Closing += OnChannelClosing;
    _proxy.InnerChannel.Closed += OnChannelClosed;

关于c# - 使用 WCF 回调时,客户端如何知道服务器是否已中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700523/

相关文章:

jquery - 具有分页和排序功能的表格数据

android - 使用服务绑定(bind)从服务更新 Activity TextView

grails question (sample 1 of Grails To Action book) Controller 和服务问题

java - 如何实现Java windows服务包装器YAJSW的停止和启动逻辑?

c# - 出于单元测试目的,如何更改 "today' 的日期?

c# - 如何为 RadioButton 组注册事件?

c# - 如何测试对话机器人本地主机

c# - 为什么我的无效 WCF 消息没有被记录?

c# - 以编程方式添加端点 header 安全性 WCF

wcf - 通过https访问AppHarbor上的WCF服务