我使用会话变量获得的氛围在ASP.NET MVC中被忽视了。
一旦用户登录,我想保留用户的userId,这样我就不必一直查询它。
ASP.NET MVC中最有效的方法是什么?
答案 0 :(得分:18)
我曾经偶尔看到类似的问题,我无法弄清楚这种“氛围”的来源。这就是Session专门设计用于存储会话相关信息的内容。使用Session存储用户ID或类似信息绝对没有错。
答案 1 :(得分:8)
你有正确的氛围。在许多情况下,这是不必要的。会话状态很容易丢失并且经常被误用于处理登录用户(用户登录的设置是通过设置Session [“IsLoggedIn”] = true或通过检查Session [“User”]来完成的!!= null,突然会话消失,当应使用表单身份验证时,用户已注销)。在这里,您可以阅读有关表单身份验证和使用它存储其他数据的信息:
Forms Authentication Configuration and Advanced Topics
如果您仍想使用会话,最好创建包装器以使其更易于测试并删除代码中的字符串:
答案 2 :(得分:2)
会话旨在用于有状态的用户交互 - 想到购物车。它们被低估了,因为它们很难测试并且倾向于强制序列化逻辑进入控制器。如果您只想最小化查询,则应使用缓存。
编辑: 很难得到HttpContext.Cache的教程。 Steven Sanderson在Pro ASP.net MVC Framework(Apress 2009)中有大约4页。 530-534。
Caching in asp.net-mvc也可能会给你一些提示。
答案 3 :(得分:0)
会话状态。如果不合适,不应该使用它。但是其他任何东西都不适用于凭证。只需确保它们是可序列化的,这样您就可以在需要时将会话推出。