使用CacheManager(或session / viewstate)时保持键唯一

时间:2012-06-21 19:05:39

标签: c# asp.net caching

使用Microsoft CacheManager时,有没有一种方法可以防止密钥冲突?什么阻止某人编写另一个使用相同密钥的类,没有意识到它已被使用?每个网页是否需要使用单独的缓存管理器?

这将使分享变得困难。我想知道使用会话的同样事情。似乎没有好的方法来管理密钥并保持它们的独特性。

我见过其他使用命名空间概念的缓存解决方案。如果我可以使用网页名称作为命名空间来保持事物的独特性,那么这将是有意义的,然后我想要共享的事物的一些全局命名空间。同样可能适用于我提到的会话。

即使这个来自企业文档文档的例子也会让你觉得没有很好的方法可以为给定的员工ID存储多种类型的对象。

cache.Add(employeeId.ToString(), photoData, 
   CacheItemPriority.High, null, 
   new ICacheItemExpiration[] { expiry });

您几乎需要存储一个主对象,其中包含您需要的所有内容,我不想这样做。或者你最终得到一堆嵌套的词典。关于如何最好地解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

根据您的使用情况,我见过几种选择:

  • 您可以将密钥存储在ResourcesSettings
  • 您可以使用调用者生成的GUID

答案 1 :(得分:1)

只需编写一个命名方案,例如: “路径/到/ File.Component.Object.Object2.Property”

这应该是独一无二的。然后自己构建一些实用方法,这样就不必手动复制粘贴字符串了。