J'ai écrit une application compatible mono qui fonctionne bien sur une machine Windows et travaille principalement sur mon mac. La zone qui ne fonctionne pas actuellement est la couche qui utilise WCF (ChannelFactory) pour communiquer entre le serveur et le client.Mono WCF problème sur OSX
La question semble être quand je tente d'ouvrir le ChannelFactory sur le serveur, voici un extrait de code:
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();
Le problème est dû à l'appel .Open() - il semble juste accrocher mon mac. Créer le point de terminaison prend beaucoup plus de temps à créer que sur mon PC (environ 3-4 secondes) mais je peux vivre avec cela si je peux faire fonctionner la couche WCF.
Quelqu'un at-il des suggestions sur la façon de progresser dans ce problème?
Quelle version de Mono? – TheNextman
mono --version renvoie 2.6.7 sur mon mac. Au moment de l'écriture, il s'agit de la version stable la plus récente. – Mattl
Juste une note pour quiconque lit ceci. J'ai corrigé le problème avec la dernière version et un refactor rapide du code. – Mattl