草庐IT

c# - 将 lambda 表达式转换为用于缓存的唯一键

我查看了与此类似的其他问题,但找不到任何可行的答案。我一直在使用以下代码生成唯一键,以便将我的linq查询结果存储到缓存中。stringkey=((LambdaExpression)expression).Body.ToString();foreach(ParameterExpressionparaminexpression.Parameters){stringname=param.Name;stringtypeName=param.Type.Name;key=key.Replace(name+".",typeName+".");}returnkey;它似乎适用于包含整数或bool值的

c# - .NET : Output caching for WebMethod?

我可以缓存WebMethod输出的返回值吗?例如。如果在最后X秒或分钟内调用了WebMethod,则实际上不要再次运行该方法——只需使用与上次提供的结果相同的结果。或者我应该在类/WebMethod内部滚动自己的缓存吗? 最佳答案 您可以使用CacheDurationWebMethod属性的参数,用于指定将请求的输出缓存给定的时间量。[WebMethod(CacheDuration=60)]以上代码将使您的网络方法将其结果缓存60秒。 关于c#-.NET:Outputcachingfor

c# - .net MemoryCache - 通知删除的项目

我在.NET4.0和c#中使用.net内存缓存,我希望在删除项目时通知我的应用程序(这样我就可以将它已删除写入日志文件或通知UI,该项目已被删除)。有没有办法做到这一点。我使用的是System.Runtime.Caching.MemoryCache而不是System.Web.Caching 最佳答案 编辑:如果您使用的是System.Runtime.Caching.MemoryCache,则有一个callback在CacheItemPolicy对象上删除,以及一个更新。myMemoryCache.Set("key",null,new

c# - System.Runtime.Caching 中是否存在某种 CacheDependency?

我听说.NET4有一个新的缓存API。好的,旧的System.Web.Caching.Cache(顺便说一句,.NET4中仍然存在)能够设置所谓的CacheDependency对象以确定缓存项是否过期。还可以通过从CacheDependency派生自定义子类来指定用于确定缓存项是否仍然可用的自定义逻辑。我很好奇,有没有办法在新API中提供这样的逻辑? 最佳答案 我还没有真正使用过它,但是从ChangeMonitorClass派生的类似乎服务于类似的目的。 关于c#-System.Runt

c# - 如果它存在而不是数据库,我如何缓存对象并从内存中读取?

我有以下四个类:publicclassSection{publicintSectionId{get;set;}publicstringName{get;set;}publicstringTitle{get;set;}publicstringMetaTag{get;set;}publicstringMetaDescription{get;set;}publicstringUrlSafe{get;set;}publicstringHeader{get;set;}publicstringImageName{get;set;}}publicinterfaceISectionRepository

c# - PostSharp 的任何免费替代品

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我们正在构建的应用程序会定期发送不同类型的电子邮件。我将电子邮件模板存储在Azureblob存储中,负责发送电子邮件的方法从那里提取适当的电子邮件模板。我希望模板位于托管服务之外,以防我想更新它,只需将新模板上传到blob即可。从性能和成本的角度来看

c# - 在 C# 中缓存 FileInfo 属性

来自MSDNdocumentation对于FileInfo.Name属性,我看到该属性的数据在第一次被调用时被缓存,并且只会在随后使用Refresh方法进行更新。我有以下问题,但我在文档中找不到或不太清楚:所有属性的数据是否同时缓存?Refresh方法是在创建FileInfo时调用,还是仅在第一次调用属性时调用?如果我调用一处特性,例如Name属性,它被称为Refresh,将调用不同的属性,例如DirectoryName属性,第一次导致它再次调用Refresh,还是仅由整个类中访问的第一个属性调用(参见问题#1)?我可以通过手动调用Refresh来预缓存所有属性吗?(假设它没有在构建对

c# - c# 的磁盘支持字典/缓存

我正在寻找用于缓存大量数据的简单解决方案。相关问题,但针对不同的语言:PythonDisk-BasedDictionaryDisk-backedSTLcontainerclasses?以不同的方式结束问题:LookingforasimplestandalonepersistantdictionaryimplementationinC#我不需要(或不想为)持久性、事务、线程安全或类似的东西付出任何代价,并且想要一些使用起来不比List或Dictionary复杂多少的东西。如果我必须编写代码,我会将所有内容作为文件保存在临时目录中:stringGet(inti){File.ReadAllT

c# - 按值从缓存中获取对象

摘要我正在编写一个有几个对象缓存的应用程序。它需要工作的方式是从缓存中检索对象时:objectfoo=CacheProvider.CurrentCache.Get("key");foo应该是原始对象的本地副本,而不是引用。实现这个的最佳方法是什么?到目前为止,我想到的唯一方法是使用BinarySerializer创建一个副本,但我觉得我缺少更好的方法。详情缓存实现的支持是任意的,因为它是基于提供者的。我需要支持任意数量的缓存,从HttpRuntime缓存到类似Velocity的缓存。这里的重点是缓存支持和消费者代码之间的层——该层必须确保返回对象的副本。有些缓存已经这样做了,但有些还没

c# - VaryByHeader 与子操作上的 OutputCacheAttribute

借助ASP.NETMVC3中的[OutputCacheAttribute],您可以非常灵活地输出缓存。利用“VaryByHeader”属性按主机名进行存储桶缓存非常有用。例如:[OutputCache(Duration=60,VaryByHeader="host")]publicActionResultFoo(){returnthis.View();}但是,对于子操作,您不能应用“VaryByHeader”。框架抛出以下异常:OutputCacheAttributeforchildactionsonlysupportsDuration,VaryByCustom,andVaryByPar