【问题标题】:Mono WCF issue on OSXOSX 上的 Mono WCF 问题
【发布时间】:2011-01-07 22:15:52
【问题描述】:

我编写了一个兼容单声道的应用程序,该应用程序在 Windows 机器上运行良好,并且主要在我的 Mac 上运行。当前不工作的领域是使用WCF(ChannelFactory)在服务器和客户端之间进行通信的层。

问题似乎是当我尝试在服务器上打开 ChannelFactory 时,这里是一个代码 sn-p:

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();

问题在于 .Open() 调用 - 它似乎只是挂在我的 Mac 上。创建端点比在我的 PC 上创建的时间要长得多(大约 3-4 秒),但如果我可以让 WCF 层正常工作,我可以忍受。

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

【问题讨论】:

  • mono --version 在我的 Mac 上返回 2.6.7。在撰写本文时,这是最新的稳定版本。
  • 只是给任何阅读本文的人的注释。我用最新版本和快速重构代码解决了这个问题。

标签: c# wcf macos mono


【解决方案1】:

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

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

【讨论】:

  • 感谢您的提醒。我在我的 Mac 上安装了 2.8.2,但不幸的是,现在应用程序在尝试创建通道工厂时挂起,我无法再进行 .open 调用。
  • 我可以在 Linux 上的 Mono 2.8.2 上使用 ChannelFactory。通常我使用 BasicHttpBinding,但我相信我们也测试了 NetTcpBinding。抱歉,除了说您正在尝试应该是可能的之外,我无法提供更多帮助。
猜你喜欢
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
相关资源
最近更新 更多