0

我是 WCF 的初学者。我有两个简单的服务:添加客户的名字和姓氏,并返回客户的数量。当我在每次客户添加时向客户测试服务时,数量不增加始终是一个。这里代码:

class ClientService : IClientService
{
   List<Client> list = new List<Client>();

   public bool SubmitClient(Client client)
   {
      list.Add(client);
   }

   public int IClientService.GetClient()
   {
      return list.Count;
   }
}

客户端代码:

protected void Button1_Click(object sender, EventArgs e)
{
   ClientServiceClient channel = new ClientServiceClient();
   Client cl = new Client();
   cl.FirstName = txtFName.Text;
   cl.LastName = txtLName.Text;

   channel.SubmitClient(cl);
   labbel1.Text=string.Format("Number of clients: {0}"),channel.GetClient());
}
4

1 回答 1

0

您需要在 ServiceBehavior 属性中提供InstanceContextMode值。问题是您的列表是一个类级别的变量,您需要将 WCF 服务配置为单实例模式。

  • PerSession(default):为每个会话创建一个新的 InstanceContext 对象。
  • PerCall:在每次调用之前创建一个新的 InstanceContext 对象,并在每次调用之后回收该对象。
  • Single:只有一个 InstanceContext 对象用于所有传入调用,并且不会在调用后回收。

这是关于控制 WCF 实例/会话主题的一个很好的链接:

http://www.codeproject.com/Articles/86007/3-ways-to-do-WCF-instance-management-Per-call-Per

于 2012-08-25T16:05:03.740 回答