0

我是 mono 的新手,但被要求考虑使用 mono 为 Linux、Android 和/或 MacOS 运行我们现有的 .NET 客户端应用程序。

服务器/客户端使用 WCF 双工通信与 NetTcpBinding。我创建了一个非常精简的客户端版本,以尝试分析与服务器的连接的哪些基本原理将在单声道中工作(我正在运行单声道 v2.10.8)。

我遇到的第一个问题是对 IClientChannel 的强制转换。客户端上的 factory.CreateChannel 结果给出了 InvalidCastException。但是我设法通过创建一个实现服务合同和 IClientChannel 的辅助接口来解决这个问题

public interface IMySessionChannel : IMySession, IClientChannel {}

...并在我的 ChannelFactory 中使用它

_factory = new DuplexChannelFactory<IMySessionChannel>(....)

但我仍然有一点问题。我为 IClientChannel 的 Closing、Closed 和 Faulted 事件添加了事件处理程序,它们在接收到事件时将消息写入客户端的屏幕。

在 Windows 上一切正常,但是当以单声道运行客户端(仍然在 Windows 机器上运行单声道命令提示符)并关闭服务器时,事件似乎没有传递给客户端。

我错过了什么吗?单声道中的 IClientChannel 接口是否存在一般问题?对服务器的调用与回调一样工作,但我只是对 IClientChannel 有一些问题。

提前感谢您的帮助!

4

1 回答 1

0

Mono 中存在与 Mono相关的错误 #4511DuplexChannelFactory,导致通道无法转换为IClientChannel. 我上周解决了这个问题,但可能还有其他问题。

如果您仍然遇到问题,能否请您提交带有测试用例的错误报告?

于 2012-10-01T15:45:39.460 回答