缓存 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
才能在应用程序缓存中。呸!
我有一个很长的 运行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
才能在应用程序缓存中。呸!