1

我目前以这种方式使用用户名和密码登录:

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

这工作正常。现在,我想添加一种注销方式(用户按下按钮,应该以某种方式发送注销请求)。

这是可能的吗?如果可以,最好的方法是什么?

4

1 回答 1

5

如果 WCF 配置为 PerSession,aclient.Close();将完成这项工作。

该过程将是:

  • 客户端创建 WCF 服务的代理并进行方法调用。
  • 创建了一个 WCF 服务实例,它为方法响应提供服务。
  • 客户端在同一会话中再进行一次方法调用。
  • 相同的 WCF 服务实例为方法调用提供服务。
  • 当客户端完成其活动时,WCF 实例将被销毁并提供给垃圾收集器进行清理。

使用 Close 您将触发垃圾收集器清理。

如果 WCF 配置了 PerCall,则无需担心 Close/Logof。我建议始终执行显式关闭(和使用),但在这种情况下并不是真正必要的。

如果 WCF 配置为 SingleInstance... 好吧,也许你做错了:) 无论如何,你应该继续使用 Close()。

于 2013-03-20T08:09:18.213 回答