我一直在研究通过控制台应用程序托管的RESTful Web服务,以解决特定的用例(ASP.NET对我们当前的需求来说太过分了),我有点困惑。
首先,我按照MSDN directions创建了一个WCF Web服务。这很好用,我能够发出GET和POST请求并得到响应。
为了将此示例扩展到我们的用例,我需要将POST数据保存到集合中:
所以我更改了原始邮政编码:
public string EchoWithPost(string s)
{
return "You said " + s;
}
到
public List<string> Bc = new List<string>();
public string EchoWithPost(string s)
{
this.Bc.Add(s);
return "You said " + s;
}
期望我的列表随着每个新的POST请求而增长。但情况并非如此。通过观察调试器,我确定每个新的POST请求都实例化了一个新列表,导致旧列表超出范围并丢失。
这是为什么?
答案 0 :(得分:5)
您的WCF服务是作为新实例创建的,每个请求都处理它。根据您的需要,您可以做多件事。
我怀疑第三种选择最适合您的需求。
答案 1 :(得分:0)
因为每次执行新呼叫时都会创建一个新的服务实例。
您应该使用静态列表或使用其他类型的持久性。
public static List<string> Bc = new List<string>();
public string EchoWithPost(string s)
{
this.Bc.Add(s);
return "You said " + s;
}