我有一个长期运行的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应用程序中使用该服务,并缓存如下“项”的元素.
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服务结果吗?
发布于 2015-03-25 01:00:28
原来Cache.Insert(...)在Page类中。它需要是Context.Cache.Insert才能在应用程序缓存中。哈!
https://stackoverflow.com/questions/29237476
复制相似问题