WCF缓存不起作用

时间:2014-09-09 13:01:21

标签: c# asp.net asp.net-mvc wcf caching

我想在我的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项目。):

enter image description here

我的客户端代码(位于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中声明)。但它会在每次客户端调用时更新。

1 个答案:

答案 0 :(得分:0)

我不太确定,但WebGetAttribute适用于RESTful服务。所以我认为整个缓存只适用于RESTful服务。

http://pieterderycke.wordpress.com/2012/04/09/caching-in-wcf-services-part-1/中描述了另一种缓存方式。