我想在我的WCF服务中缓存一些服务。我使用Microsoft Caching Support for WCF Web HTTP Services作为参考。我的服务器web.config文件是:
<caching>
<outputCache enableOutputCache="true" />
<outputCacheSettings>
<outputCacheProfiles>
<add name="GetCurrentDateTime" location="Server" duration="604800" varyByParam="offset; lang; categorytype" enabled="true" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
和
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
我的解决方案是这样的(仅包含2个Web项目。):
我的客户端代码(位于Default.aspx中):
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var client = new Test_Services.TestServicesClient();
var dateTime = client.GetCurrentDateTime();
Response.Write(dateTime);
}
}
服务是:
[WebGet]
[AspNetCacheProfile("GetCurrentDateTime")]
public string GetCurrentDateTime()
{
var datetime = DateTime.Now.ToString();
return datetime;
}
只需返回当前日期时间。所以我希望它能回归&#34; 604800秒&#34; interval(在web.config中声明)。但它会在每次客户端调用时更新。
答案 0 :(得分:0)
我不太确定,但WebGetAttribute适用于RESTful服务。所以我认为整个缓存只适用于RESTful服务。
http://pieterderycke.wordpress.com/2012/04/09/caching-in-wcf-services-part-1/中描述了另一种缓存方式。