缓存 Web 服务结果

Caching web service results

我有一个很长的 运行ning Web 服务(3-5 分钟),其中 returns 一个大的自定义对象。

我这样声明网络方法...

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(...) 在页面 class 中。它需要 Context.Cache.Insert 才能在应用程序缓存中。呸!