2012-08-06 30 views
4

我一直在寻找,并一直在阅读,你不能在信号集线器类中使用HttpContext.Current.Cache,那么如果我想让每个用户都有一些缓存数据,那么解决方法是什么?在我的集线器方法中访问。解决signalR

编辑:

这个数据只需要我的HUB类内使用,我不需要在其他地方访问它在我的asp.net应用程序。但它肯定需要用户特定的。

+1

您是否期望能够与ASP.NET应用程序共享同一个确切的缓存? – 2012-08-06 18:06:54

+0

@DrewMarsh不,它只需要在集线器类内访问 – anthonypliu 2012-08-06 18:16:41

回答

7

如果您只是在寻找内置ASP.NET缓存的等效功能,那么您可以简单地启动一个类为System.Runtime.Caching.MemoryCache的静态实例。然后只需访问各种集线器方法中的静态实例。

请记住,这是一款单服务器内存解决方案。对于更高级的进程外分布式缓存解决方案,我会考虑AppFabric(Azure或本地)或Memcached。

+0

哇,很好的回答!我想知道如果你注入一个维护你的缓存的类的实例,那会起作用吗? – anthonypliu 2012-08-06 18:34:48

+2

哦,当然,注入会很好......并且会更好地执行。我只是给出了一个静态的原因,我不想承担任何关于你的设置的建议。如果你打算进入注入路线,我会建议完全创建一个单独的接口来抽象缓存实现,以便稍后可以引入不同的支持实现,它使用更强大的分布式缓存技术。 – 2012-08-06 18:58:45