2011-01-02 10 views
3

私は、Windowsマシンでうまく動作し、ほとんどの場合私のMacで動作するモノラル互換のアプリケーションを書いた。現在動作していない領域は、WCF(ChannelFactory)を使用してサーバーとクライアント間で通信するレイヤーです。OSXでのモノWCFの問題

問題は、私が試してみて、サーバー上のChannelFactoryを開いたときのように見える、ここにコードスニペットです:問題は.Open()の呼び出しである

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

- それだけでハングアップしたように見えます私のマック。エンドポイントを作成するのは、自分のPCよりも作成時間が長くなります(約3〜4秒)が、WCFレイヤーを機能させることができるのであれば、これで生きることができます。

誰もこの問題をどのように進歩させるための提案がありますか?

+0

Monoのバージョンは? – TheNextman

+0

mono --versionは私のMacで2.6.7を返します。これは最新の安定版です。 – Mattl

+0

これを読んだ人のためのメモ。私は最新バージョンとコードの簡単なリファクタを使って問題を解決しました。 – Mattl

答えて

2

モノの最新の安定版リリースは2.8.2(http://www.go-mono.com/mono-downloads/download.html)である

あなたが本当に実行する前に、このバージョンを試してみる必要があります他に何か。 2.6.xのWCFスタックは、何よりも「プレビュー」のほうが多く、いくつかの一般的なシナリオだけが実際に働いていました。 2.8ははるかに完全です。

+0

ヘッドアップありがとう。私は2.8.2を私のMacにインストールしましたが、残念ながらチャンネル・ファクトリを作成しようとするとアプリケーションがハングしてしまい、.open呼び出しを行うことができなくなりました。 – Mattl

+0

LinuxでMono 2.8.2でChannelFactoryを使用できます。一般的に私はBasicHttpBindingを使用しますが、NetTcpBindingもテストしたと思います。申し訳ありませんが、私はあなたがしようとしていることが可能であるべきであると言うことから離れて、さらに助けになることはできません。 – TheNextman