Я написал моносовместимое приложение, которое отлично работает на 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();
Проблема связана с вызовом .Open () - он просто зависает на моем Mac. Создание конечной точки занимает намного больше времени, чем на моем ПК (около 3-4 секунд), но я могу с этим справиться, если смогу заставить слой WCF функционировать.
Есть ли у кого-нибудь предложения о том, как решить эту проблему?