我是单声道新手,但有人被要求调查使用mono for Linux,Android和/或MacOS运行我们现有的.NET客户端应用程序。
服务器/客户端使用与NetTcpBinding的WCF双工通信。我已经创建了一个精心设计的客户端版本,试图分析与服务器连接的哪些基本原理将以单声道工作(我正在运行mono v2.10.8)。
我遇到的第一个问题是对IClientChannel的强制转换。客户端上的factory.CreateChannel结果给出了InvalidCastException。但我设法通过创建实现服务契约和IClientChannel
的帮助程序接口来解决这个问题 public interface IMySessionChannel : IMySession, IClientChannel {}
...并在我的ChannelFactory中使用它
_factory = new DuplexChannelFactory<IMySessionChannel>(....)
但我仍然有一点问题。我为IClientChannel的Closing,Closed和Faulted事件添加了事件处理程序,它们在接收事件时在客户端向屏幕写入消息。
在Windows上一切正常,但是当以单声道运行客户端(仍然在Windows机器上运行mono命令提示符)并关闭服务器时,事件似乎没有通过客户端。
我错过了什么吗?单声道IClientChannel接口是否存在一般问题?对服务器的调用和回调一样,但我只是遇到IClientChannel的问题。
提前感谢您的帮助!
答案 0 :(得分:0)
Mono中DuplexChannelFactory
与IClientChannel
相关,阻止了频道投放到{{1}}。我上周解决了这个问题,但可能存在其他问题。
如果您仍然遇到问题,请提交一份包含测试用例的错误报告吗?