如何使用Web服务保留C#对象?

时间:2014-07-03 10:18:19

标签: c# web-services

我用C#编写了这个WebService:

public class Service : IService
{
    TestClass testObject = new TestClass();

    public string GetData()
    {
        testObject.Counter++;
        return string.Format("Test Value: {0}", testObject.Counter);
    }
}

public class TestClass
{
    public int Counter { get; set; }

    public TestClass()
    {
        Counter = 0;
    }
}

这是一个WebService,每次我调用我的WebService时都会重新创建everthing。所以我的计数器永远不会增加,每次我调用GetData() WebService返回“1”。

在每次WebService调用之间保留数据的解决方案是什么?

  1. 数据库,我想避免这个解决方案,
  2. 在客户上陈述,怎么样?
  3. 会话,有一种简单的方法可以使用它吗?
  4. 持久服务。这有用吗?
  5. 您是否了解文章而不是解释如何使用WebService持久保存数据?

    谢谢,

2 个答案:

答案 0 :(得分:1)

例如,使用Session称为有状态Web服务。请参阅here

但是,出于可伸缩性的原因,大多数情况下都会to avoid。您的服务电话应始终彼此独立。

答案 1 :(得分:0)

您可以在HttpContext.Cache中跟踪计数器并在那里增加值:

int counter = (int) HttpContext.Current.Cache["ServiceCallCounter"];
counter ++;
HttpContext.Current.Cache["ServiceCallCounter"] = counter;

请注意,您必须先激活它,并注意此缓存不会保留Application-Pool循环:

<system.serviceModel>        
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>