1

私は現在、次の方法でユーザー名とパスワードを使用してログインしています。

var client = new ServiceReference.CalcServiceClient();
client.ClientCredentials.UserName.UserName = "test";
client.ClientCredentials.UserName.Password = "test";
client.DoWork();

これは正常に機能します。ここで、ログアウトする方法を追加したいと思います(ユーザーがボタンを押すと、何らかの方法でログアウト要求が送信されます)。

これは可能ですか?もしそうなら、これを実装するための最良の方法は何でしょうか?

4

1 に答える 1

5

WCFがPerSessionで構成されている場合、client.Close();は作業を行います。

プロセスは次のようになります。

  • クライアントはWCFサービスのプロキシを作成し、メソッド呼び出しを行います。
  • メソッド応答を提供するWCFサービスインスタンスが作成されます。
  • クライアントは、同じセッションでもう1つのメソッド呼び出しを行います。
  • 同じWCFサービスインスタンスがメソッド呼び出しを提供します。
  • クライアントがアクティビティを終了すると、WCFインスタンスは破棄され、クリーンアップのためにガベージコレクタに提供されます。

Closeを使用すると、ガベージコレクタのクリーンアップがトリガーされます。

WCFがPerCallで構成されている場合は、Close/Logofについて心配する必要はありません。常に明示的なクローズ(および使用)を実行することをお勧めしますが、その場合は実際には必要ありません。

WCFがSingleInstanceで構成されている場合...まあ、おそらくあなたはそれを間違ってやっています:)とにかく、Close()を続行する必要があります。

于 2013-03-20T08:09:18.213 に答える