缓存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
在应用程序缓存中。 卫生署!