打開vs2010 在工具選項中選擇擴展管理器——聯機庫 安裝WCF REST Service Template 40(CS)模板web
安裝後新建wcf服務應用程序,刪除默認創建的文件。緩存
新建RestWcf4HelpPage.svc,代碼以下ide
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值緩存的有效時間。ui
<?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>
幫助頁面的效果以下圖spa
get請求結果以下圖debug
緩存效果如圖,緩存的時間設置爲10s,在10s內結果都是下圖,超過期間後就是另外一個結果了code