2009-11-03 25 views
5

サービスホストのすべての接続されたクライアントのための何らかの場所識別子を列挙するにはどうすればよいですか?私は長期間の計算にデュプレックス接続を使用しています。サービスホストはシングルトンです。wcfサービスの接続されたクライアントのリストを取得する

呼び出しクライアントのIPを(.net 3.5で)把握できますが、接続されているすべてのクライアントのIPを取得する方法がわかりません。

答えて

1

私はそれに何かが組み込まれているとは思っていませんが、呼び出しがサービスimplにディスパッチされてクライアントIPがスティックされる前に、RemoteClientEnpointMessagePropertyを検査するIServiceBehavior + IDispatchMessageInspectorを簡単に構築できます共有リストに追加し、コール/セッションが終了すると削除します。

2

デフォルトでは、WCFは「通話」サービスの使用を促進します。クライアントが呼び出し、要求が処理された後、すぐにクライアントが切断されます。

WCFは長時間の接続には向いていないため、実際に接続されているユーザーを列挙することはできません。 2番目)。

WCFは、ログインして長時間ログインしたままのWindowsドメインサーバーと似ていません。

+0

申し訳ありません私の投稿ではっきりしていませんでしたが、私はデフォルトのサービス動作を使用していません。 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single、ConcurrencyMode = ConcurrencyMode.Multiple)] InstanceContexMode.Singleには、デフォルトの「呼び出しごと」モードよりも寿命の長いインスタンスが1つあります。 実装されているサービスは、現在、コールバックコントラクトを使用して、準備ができたら結果を送信します。 クライアントは、複数の要求に使用できるように、サーバーとの接続をキャッシュします。接続は長時間実行されています。 – Sindhudweep

+0

OK - それはとても良いアイデアだとは思っていませんが、設定の詳細はわかりません。残念ながら、WCF 3.5では、管理と監視のためのサポートはほとんどありません。これは、.NET 4の後にしばらく出荷予定のIIS7/WASの管理アドオン「Dublin」プロジェクトの一部になります(2010年3月)。 –

関連する問題