using System.Collections.Generic;using System.ServiceModel;using System.ServiceModel.Activation;using System.ServiceModel.Web;namespace namesService{ [ServiceContract] [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class namesService { List<string> names = new List<string>(); [OperationContract] [AspNetCacheProfile("CacheFor60Seconds")] [WebGet(UriTemplate="")] public List<string> GetAll() { return names; } [OperationContract] public voID Save(string name) { names.Add(name); } } }
web.config看起来像这样:
<?xml version="1.0"?><configuration><system.web> <compilation deBUG="true" targetFramework="4.0" /></system.web><system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata @R_404_6822@GetEnabled="true"/> <serviceDeBUG includeExceptionDetailinFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" /></system.serviceModel><system.webServer> <modules runAllManagedModulesForAllRequests="true"/></system.webServer><system.web> <caching> <outputCache enableOutputCache="true"/> <outputCacheSettings> <outputCacheProfiles> <add name="CacheFor60Seconds" location="Server" duration="60" varyByParam="" /> </outputCacheProfiles> </outputCacheSettings> </caching></system.web>
如您所见,GetAll方法已使用AspNetCacheProfile进行修饰,而cacheProfilename引用了web.config的“ChacheFor60Seconds”部分.
我在WCF测试客户端中运行以下序列:
1)使用参数“Fred”调用Save
2)致电GetAll – >正如预期的那样,“弗雷德”被归还.
3)使用参数“Bob”调用Save
4)调用GetAll – >这次“弗雷德”和“鲍勃”被退回.
我期待第二次调用GetAll时只返回“Fred”,因为它应该返回步骤(2)的缓存结果.
我无法弄清楚问题是什么,所以请一定帮助.
解决方法 您正在尝试缓存没有任何参数的完整结果,因此您的设置应该是<outputCacheSettings> <outputCacheProfiles> <add name="CacheFor60Seconds" location="Server" duration="60" varyByParam="none" /> </outputCacheProfiles> </outputCacheSettings>
编辑:
[OperationContract][AspNetCacheProfile("CacheFor60Seconds")][WebGet]public List<string> GetAll(){ return names;}总结
以上是内存溢出为你收集整理的c# – 无法让AspNetCacheProfile在WCF 4.0服务中工作全部内容,希望文章能够帮你解决c# – 无法让AspNetCacheProfile在WCF 4.0服务中工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)