C# OSX上的Mono WCF问题

C# OSX上的Mono WCF问题,c#,wcf,macos,mono,C#,Wcf,Macos,Mono,我已经编写了一个单声道兼容的应用程序,它可以在Windows机器上正常工作,并且大部分可以在我的mac上工作。目前不起作用的领域是使用WCF(ChannelFactory)在服务器和客户端之间进行通信的层 问题似乎是当我尝试在服务器上打开ChannelFactory时,下面是一段代码片段: string address = "21"; // added this for simplicity in conveying the problem... string server_address =

我已经编写了一个单声道兼容的应用程序,它可以在Windows机器上正常工作,并且大部分可以在我的mac上工作。目前不起作用的领域是使用WCF(ChannelFactory)在服务器和客户端之间进行通信的层

问题似乎是当我尝试在服务器上打开ChannelFactory时,下面是一段代码片段:

string address = "21"; // added this for simplicity in conveying the problem...
string server_address = "net.tcp://192.168.1.122:4505/DeviceServer/";
string serviceAddress = string.Format(server_address, address);

ThreadedServiceHost<DeviceService, IDeviceContract> DeviceHost =
            new ThreadedServiceHost<DeviceService, IDeviceContract>(serviceAddress, address, new NetTcpBinding());

EndpointAddress endPoint = new EndpointAddress(
                     new Uri(string.Format(serviceaddress, address) + address));

System.ServiceModel.Channels.Binding binding = new NetTcpBinding();

teeGlobal.ServerDeviceFactory = new ChannelFactory<IDeviceChannel>(binding, endPoint);
teeGlobal.ServerDeviceFactory.Open();
string address=“21”//添加此选项是为了简单地传达问题。。。
string server_address=“net。tcp://192.168.1.122:4505/DeviceServer/";
string serviceAddress=string.Format(服务器地址,地址);
ThreadedServiceHost设备主机=
新的ThreadedServiceHost(serviceAddress,address,new NetTcpBinding());
EndpointAddress endPoint=新的EndpointAddress(
新的Uri(string.Format(serviceaddress,address)+address));
System.ServiceModel.Channels.Binding Binding=新的NetTcpBinding();
teeGlobal.ServerDeviceFactory=新的ChannelFactory(绑定,端点);
teeGlobal.ServerDeviceFactory.Open();
问题在于.Open()调用-它似乎挂在我的mac上。创建端点比在我的PC上创建要花费更长的时间(大约3-4秒),但如果我能让WCF层正常工作,我可以接受这一点


有人对如何解决这个问题有什么建议吗?

Mono的最新稳定版本是2.8.2(http://www.go-mono.com/mono-downloads/download.html)


在执行任何其他操作之前,您确实需要尝试此版本。2.6.x中的WCF堆栈更像是一个“预览”,而不是其他任何东西,只有一些常见的场景才真正起作用。2.8更加完整。

mono——在我的mac上,版本返回2.6.7。在撰写本文时,这是最新的稳定版本。仅供阅读本文的人参考。我用最新版本和代码的快速重构修复了这个问题。谢谢你的提醒。我已经在mac上安装了2.8.2,但不幸的是,当尝试创建通道工厂时,应用程序挂起,我无法再访问.open调用。我可以在Linux上的Mono 2.8.2上使用通道工厂。通常我使用BasicHttpBinding,但我相信我们也测试了NetTcpBinding。对不起,除了说你所尝试的应该是可能的之外,我帮不了你什么忙。