求助,基于WCF的聊天室,在用户非法掉线后,不能将Disconnected事件通知到Server

这是我用WPF、WCF、WF、LINQ开发的一个简易聊天室,作为游戏大厅的Demo。

代码下载:https://files.cnblogs.com/Jax/TestWCFWPF.rar

我在WCF部分遇到了很棘手的困难。我使用的是TCPBinding+双工+回调技术:

    [ServiceContract(CallbackContract = typeof(IClientCallback))]
    public interface IServer

 

    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class SystemChat : IServer

现在的问题是,如果由于网络问题或死机,用户离开聊天室,那么不能产生消息通知Server(不要说CLosed事件,这时Client已经脱离网络,根本无法发送这个事件)。

我在国外找到一个技术blog(http://www.rcs-solutions.com/blog/CategoryView,category,WCF.aspx),讲到这个问题,说是添加以下事件:

            OperationContext.Current.Channel.Closed += ClientClosed;
然后在ClientClosed方法中进行处理。但是在我的程序中根本不会触发这个事件。因此,应该是我的契约中的某个WCF特性没有配置好导致的错误。有可能是Session没有设置的关系。

我昨晚搞到三点也没有解决。请园子的兄弟们帮我把这个Bug修好吧,或者联系我共同讨论这个问题。多谢了。

 

 

posted @   包建强  Views(5896)  Comments(44Edit  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示