0

私はWCFの初心者です。クライアントの姓名を追加し、クライアントの数を返すという 2 つの単純なサービスがあります。顧客が追加するたびにクライアントにサービスをテストすると、増加しない数は常に 1 つです。ここにコード:

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 (デフォルト) : セッションごとに新しい InstanceContext オブジェクトが作成されます。
  • PerCall : 新しい InstanceContext オブジェクトが各呼び出しの前に作成され、その後に再利用されます。
  • Single : すべての着信呼び出しに対して 1 つの InstanceContext オブジェクトのみが使用され、呼び出し後に再利用されません。

これは、WCF インスタンス/セッションの制御に関する適切なリンクです。

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

于 2012-08-25T16:05:03.740 に答える