解决signalR的会话问题

ant*_*liu 4 c# asp.net session signalr

我一直在网上看,一直在阅读你不能HttpContext.Current.Cache在signalR集线器类中使用,所以如果我想让每个用户都有一些在我的集线器方法中访问的缓存数据,那么解决方法是什么.

编辑:

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

Dre*_*rsh 7

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

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

  • 哦,当然注入会很好......并且实现起来要好得多.我只是给出了一个静态原因的暗示,我不想假设你的设置.如果您要进入注入路径,我建议创建一个单独的接口来抽象缓存实现,以便稍后可以引入使用更强大的分布式缓存技术的不同后备实现. (2认同)