私は mono を初めて使用しますが、Linux、Android、および/または MacOS 用の mono を使用して、既存の .NET クライアント アプリケーションを実行することを検討するよう求められました。
サーバー/クライアントは、NetTcpBinding との WCF 二重通信を使用します。サーバーへの接続のどの基本要素がモノラルで機能するかを分析するために、クライアントの大幅に縮小されたバージョンを作成しました(モノv2.10.8を実行しています)。
私が最初に抱えた問題は、IClientChannel へのキャストでした。クライアント側の factory.CreateChannel の結果で InvalidCastException が発生していました。しかし、サービス コントラクトと IClientChannel を実装するヘルパー インターフェイスを作成することで、この問題を回避することができました。
public interface IMySessionChannel : IMySession, IClientChannel {}
...そしてこれをChannelFactoryで使用する
_factory = new DuplexChannelFactory<IMySessionChannel>(....)
しかし、私はまだ少し問題があります。イベントの受信時にクライアント側の画面にメッセージを書き込む IClientChannel の Closing、Closed、および Faulted イベントのイベント ハンドラーを追加しました。
Windows ではすべて正常に動作しますが、クライアントを mono で実行し (Windows マシンで mono コマンド プロンプトを実行しているだけ)、サーバーをシャットダウンすると、イベントがクライアントに送信されないようです。
これで何か不足していますか?mono の IClientChannel インターフェイスに一般的な問題はありますか? サーバーへの呼び出しはコールバックと同様に機能していますが、IClientChannel に問題があります。
助けてくれてありがとう!