缓存Web服务结果

我有一个长时间运行的Web服务(3-5分钟),它返回一个大的自定义对象。

我宣布这样的网络方法...

public class MyService : System.Web.Services.WebService
{
    [WebMethod(CacheDuration=86400)]
    [XmlInclude(typeof(MyObject))]
    public MyObject Items(string myParam)
    {
        return new MyObject(myParam);            
    }
}

然后,我使用经典的ASP.NET 4.0应用程序中的服务并缓存“Items”的元素,如下所示...

protected MyService.MyObject servObj = new MyService.MyObject();
protected void Page_Load(object sender, EventArgs e) 
{  
    if (!Page.IsPostBack) 
    {
        if (Cache["elems1"] == null) 
        {
            MyObject items = servObj.Items("myParam");
            Cache.Insert("elems1", servObj.elems1, null, DateTime.MaxValue, TimeSpan.FromHours(24));
            Cache.Insert("elems2", servObj.elems2, null, DateTime.MaxValue, TimeSpan.FromHours(24));
        }
    }
}

当我运行应用程序时,似乎Web服务缓存有时可用,有时不会,即它不会持续指定的持续时间。 Web服务运行在它自己的IIS上的应用程序池中。

任何想法为什么? 有更聪明的方式来缓存Web服务结果吗?


原来, Cache.Insert(...)在页面类中。 它需要是Context.Cache.Insert在应用程序缓存中。 卫生署!

链接地址: http://www.djcxy.com/p/12931.html

上一篇: Caching web service results

下一篇: How to deal with slow Web services?