打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板
安装后新建wcf服务应用程序,删除默认建立的文件。
新建RestWcf4HelpPage.svc,代码如下

using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Text; namespace RestWcf { [ServiceBehavior(IncludeExceptionDetailInFaults=false)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class RestWcf4HelpPage : IRestWcf4HelpPage { #region IRestWcf4HelpPage 成员 [WebGet(UriTemplate="/Rest/Get/{id}")] public string GetData(string id) { return "Hello Rest GetData"; } [WebInvoke(UriTemplate="/Rest/Add/{id}",Method="POST")] public string AddData(string id) { return "Hello Rest AddData"; } [WebInvoke(UriTemplate = "/Rest/Update/{id}", Method = "PUT")] public string UpdateData(string id) { return "Hello Rest UpdateData"; } [WebInvoke(UriTemplate = "/Rest/Delete/{id}", Method = "Delete")] public string DeleteData(string id) { return "Hello Rest DeleteData"; } #endregion } [XmlSerializerFormat] [ServiceContract] interface IRestWcf4HelpPage { [OperationContract] string GetData(string id); [OperationContract] string AddData(string id); [OperationContract] string UpdateData(string id); [OperationContract] string DeleteData(string id); } }
然后在建立RestWcf4Cache.svc,代码如下

using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Text; namespace RestWcf { [ServiceBehavior(IncludeExceptionDetailInFaults=false)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class RestWcf4Cache:IRestWcf4Cache { #region IRestWcf4Cache 成员 [AspNetCacheProfile("CacheFor10Senconds")] [WebGet(UriTemplate = "/Rest/Get/{id}")] public string GetData(string id) { return "Hello Rest GetData " + DateTime.Now.ToString(); } #endregion } [ServiceContract] interface IRestWcf4Cache { [OperationContract] string GetData(string id); } }
然后在配置web.config文件,其中duration值缓存的有效时间。
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <caching> <outputCacheSettings> <outputCacheProfiles > <add name="CacheFor10Senconds" duration="10" varyByParam="format"/> <add name="CacheFor30Senconds" duration="30" varyByParam="format"/> </outputCacheProfiles> </outputCacheSettings> </caching> </system.web> <system.serviceModel> <services> <service name="RestWcf.RestWcf4HelpPage"> <endpoint address="" behaviorConfiguration="RestWcf4HelpPageBehavior" binding="webHttpBinding" contract="RestWcf.IRestWcf4HelpPage" /> </service> <service name="RestWcf.RestWcf4Cache"> <endpoint address="" behaviorConfiguration="RestWcf4CacheBehavior" binding="webHttpBinding" contract="RestWcf.IRestWcf4Cache" /> </service> </services> <behaviors> <endpointBehaviors> <behavior name="RestWcf4HelpPageBehavior"> <webHttp helpEnabled="true" /> </behavior> <behavior name="RestWcf4CacheBehavior"> <webHttp helpEnabled="true" /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>
帮助页面的效果如下图
get请求结果如下图
缓存效果如图,缓存的时间设置为10s,在10s内结果都是下图,超过时间后就是另一个结果了