2011-01-02 2 views
3

Я написал моно-совместимое приложение, которое отлично работает на компьютере под управлением Windows и в основном работает на моем Mac. Область, которая в настоящее время не работает, - это слой, который использует WCF (ChannelFactory) для связи между сервером и клиентом.Проблема Mono WCF на OSX

Проблема, как представляется, когда я пытаюсь открыть 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(); 

Проблема заключается с вызовом .Open() - это просто зависла на мой мак. Создание конечной точки занимает намного больше времени, чем на моем ПК (около 3-4 секунд), но я могу жить с этим, если я могу заставить слой WCF функционировать.

Есть ли у кого-нибудь предложения о том, как продвигаться по этой проблеме?

+0

Какая версия Mono? – TheNextman

+0

mono --version возвращает 2.6.7 на моем mac. На момент написания это самый последний стабильный релиз. – Mattl

+0

Просто записка для тех, кто читает это. Я исправил проблему с последней версией и быстрым рефактором кода. – Mattl

ответ

2

Самый последний стабильный релиз Mono является 2.8.2 (http://www.go-mono.com/mono-downloads/download.html)

Вам действительно нужно попробовать с этой версии, прежде чем делать что-нибудь еще. Стек WCF в 2.6.x был скорее «предварительным просмотром», чем чем-либо еще, и только некоторые общие сценарии действительно работали. 2.8 намного более полно.

+0

Спасибо за головы. Я установил 2.8.2 на моем Mac, но, к сожалению, теперь приложение зависает при попытке создать фабрику каналов, я больше не могу перейти к вызову .open. – Mattl

+0

Я могу использовать ChannelFactory для Mono 2.8.2 на Linux. Обычно я использую BasicHttpBinding, но я считаю, что мы тестировали NetTcpBinding. Извините, я не могу больше помочь, кроме того, чтобы сказать, что вы пытаетесь * быть возможно. – TheNextman

Смежные вопросы