如何在WCF会话中使用WinForm客户端?

时间:2015-11-06 13:03:04

标签: c# winforms wcf session

我有一个分发的应用程序,WinForm客户端连接到WCF服务。 目前我不使用会话。 我想要使​​用会话,因为应用程序有登录,操作和注销。

在WCF方面,我有这个代码

[ServiceContract]
public interface IOperationsUser
{

    [OperationContract]
    User login(User loginUsers);

    *****
}

在客户端我使用这种方式

private OperationsUser WCF_OPERATIONS_USER =  new OperationsUser ();

所以调用方法

User userLogin = WCF_OPERATIONS_USER.login(myUser)

如何为每个用户使用会话?

1 个答案:

答案 0 :(得分:1)

1)使用InstanceContextMode=InstanceContextMode.PerSession创建服务,这样可以保证您拥有相同的服务实例来提供后续请求。

2)启动新会话使用标有OperationContract(IsInitiating = True)

的服务操作

3)在一个会话中,将使用一个相同的服务实例,因此您可以在此服务中拥有一个州。

4)关闭标有OperationContract(IsTerminating = True)

的会话使用方法

对于 IsInitiating IsTerminating 方法,您还可以添加IsOneWay=true

[ServiceContract(SessionMode = SessionMode.Allowed)]
public interface Iservice
{
   // you do not need really to return anything
   [OperationContract(IsInitiating = True, IsOneWay=true)]
   void Login(UserData user)

   [OperationContract(IsInitiating = false)]
   double ProcessData(double n1, double n2)

   // your implementation can do some finalization or even can be empty.
   // the call will simply drop the session
   [OperationContract(IsInitiating = False, IsTerminating =True, IsOneWay=True)]
   void Logout()
}