我需要在我的MVC项目中保存一些会话/用户相关信息。因为它应该是唯一的并且在会话的整个生命周期中都可用,所以我想到了“会话范围”的单例。我在这个主题上发现了几篇帖子(例如here,here或here)但后来我记得在this post中读取了关于不在MVC应用程序中使用Session对象的内容。由于这听起来像是一个坏主意,我想到了使用the 4th version of Jon Skeet's singleton。在几个快速测试中,我无法看到每个用户会话违反单例模式(即每个会话只创建一个对象)。我可能错过了一些或者可能没有正确测试过它。
将此模式用于MVC项目中的会话单例是否安全(不将对象保存在HttpContext.Current.Session
或HttpContext.Current.Items
中)?