为什么我的列表在WCF帖子中超出范围?

Rob*_*t H 1 c# wcf

我一直在调查通过控制台应用程序托管的RESTful webservices来解决特定的用例(ASP.NET对我们当前的需求来说太过分了)而且我有点困惑.

首先,我按照这些MSDN说明创建了一个WCF Web服务.这很好用,我能够发出GET和POST请求并得到响应.

希望将此示例扩展到我们的用例,我需要将POST数据保存到集合中:

所以我改变了原来的邮政编码:

public string EchoWithPost(string s)
{
    return "You said " + s;
}
Run Code Online (Sandbox Code Playgroud)

 public List<string> Bc = new List<string>();
 public string EchoWithPost(string s)
    {
        this.Bc.Add(s);
        return "You said " + s;
    }
Run Code Online (Sandbox Code Playgroud)

期待我的列表随着每个新的POST请求而增长.但情况并非如此.通过观察调试器,我确定每个新的POST请求都实例化了一个新列表,导致旧列表超出范围并丢失.

为什么是这样?

Maa*_*ten 5

您的WCF服务将作为新实例创建,并处理每个请求.根据您的需要,您可以做多件事.

  • 将列表实例更改为静态变量(不推荐).
  • 将实例上下文模式更改为单个实例.这意味着所有wcf请求都由单个实例处理.缺点是您的服务一次只能处理一个请求.看到这里.如果您需要同时处理多个请求,也不建议使用.
  • 将实例上下文模式更改为每个会话.基本上,为每个客户端创建一个服务实例.

我怀疑第三种选择最适合您的需求.