0

wcf ライブラリを作成し、1 つのホストと 2 つのクライアントを接続しています。

私の WCF 内には、クライアント A から WCF に送信されたメッセージを格納するコードがあります。

 private string CustReady; //whether the customer is ready

そして、次のように、これのための get a set メソッドがあります

  public string sendReady(string s_Ready)
    {   
        CustReady = s_Ready;
    }

    //gets state of customer (POS)
    public string getReady()
    {
        return CustReady;
    }

クライアント A は sendReady メソッドを利用し、文字列を渡します。この文字列は CustReady に格納されます。クライアント B では、ボタンがクリックされると getReady メソッドが起動され、CustReady 変数内に保持されている文字列が取得されます。これら2つのメソッドの周りにWCFにブレークポイントを置くと、クライアントAは情報を正しく保存しますが、クライアントBのボタンを押すとnullが返されます。誰かが理由を知っているかどうか疑問に思っていましたか?

ありがとう

4

1 に答える 1

3

2 つのクライアントは、ホストの 2 つのインスタンスを使用しているため、変数を共有していません。変数を静的にするか、サーバー上のServiceBehivorAttributeのInstanceContextをInstanceContextMode.Singleに設定する必要があります(ConcurrencyMode を Multiple に設定しない場合、一度に処理できるサービスへの接続は 1 つだけです)。

  [ServiceBehavior(
    ConcurrencyMode=ConcurrencyMode.Multiple,
    InstanceContextMode=InstanceContextMode.Single
  )]
  public class BehaviorService : IBehaviorService
  {
     //Snip
  }
于 2013-04-20T20:29:47.090 に答える