1

c# に wcf サービス (msdn の例の calculatorservice など) がありますが、IP ごとに 1 つのクライアントのみにサービスを提供するように制限することは可能でしょうか?

いくつかの IP を一度に接続できるようにしたい (少なくとも 5 ~ 6 のアクティブなセッション)、それは今のところ機能しますが、一意の IP (または一意のコンピューター) ごとに複数の接続は必要ありません。

4

2 に答える 2

0

一度に 5 つのセッションを開く必要があり、maxConcurrentInstances によって使用可能なクライアントが 1 つだけになると言っている場合、InstanceContextMode を = PerSession に設定しましたか? ほとんどの場合、Single に設定されています。その場合、maxConcurrentCalls は効果がありません。これを PerSession に変更すると、ForeverDebugging が示したスロットリング構成が機能します。

于 2009-12-04T14:42:00.003 に答える
0

私はいくつかの進歩を遂げました。クライアントが初めてサービスを呼び出すとき、コンストラクターでクライアントの IP アドレスと現在の操作コンテキストを保存します。

次に、同じ IP の誰かが接続した場合、その IP アドレスが使用していた前のチャネルを中止します (最新の接続が優先されます)。

operationContext.Channel.Abort();

私はそれをテストしましたが、セッションを解放して他の人が使用できるように見えますが、よくわかりません-これが最善の解決策ですか?

于 2009-12-07T07:16:02.330 に答える