【发布时间】:2018-06-23 11:48:29
【问题描述】:
我有一个不包含敏感数据的对象列表(即客户端的小部件的简单设置 5-6 个整数值和 Guid,可能同时有多个小部件)。
目前,我正在使用 ASP.NET MVC 会话。好像不太靠谱。对于存储在其中的某些键,有时会变为空。当我在调试时启动应用程序或网络速度很慢时会发生这种情况。
我可以使用客户端会话存储来存储所有设置吗? (即 sessionStorage 或 localStorage )。
我担心 IIS 重新循环会导致会话被删除 或任何服务器端异常。
编辑
public ActionResult ApplySettingsForDashboard(DashboardCommonSettings settings)
{
Session[string.Concat("SettingsToApply_",settingsToApply.PanelGuid)]=settings;
}
public DashboardCommonSettings GetSettingsFromSession(string PanelGuid)
{
var settings = Session[string.Concat("SettingsToApply_",PanelGuid)]
}
欢迎提出意见和建议。 谢谢
【问题讨论】:
-
客户端 localStorage 保存到用户清除历史记录,它不依赖于任何服务器端事件。所以你可以使用它。但是,它仅将设置保存在一台机器上的一个浏览器中。因此,如果同一用户从另一个地方访问该网站,这些设置将丢失。顺便说一句,你的例会有什么问题?为什么你认为它不可靠?如果你时不时得到 null ,这意味着你使用不正确。
-
是的,你是对的。应该用什么。我赞成使用服务器端会话。但正如我所描述的,在本地环境中调试或什至在没有调试器的情况下运行应用程序期间,会话值会针对会话内的某些键被删除。结果,当我访问 Session[Guid+"name"]...
-
Sergey Benzenko:你认为 session 的使用在某种程度上是正确的。我正在编辑帖子。继续
-
1) 尝试明确设置设置变量的类型: var settings = Session[string.Concat("SettingsToApply_",PanelGuid)] as DashboardCommonSettings; 2) 确保您不会在某处破坏会话(进行注销或其他操作)。
-
不,我明确地对它进行了类型转换。这只是我在代码中所做的一个想法。当前会话期间没有注销。这发生在登录用户上下文中的实时会话期间。不知道为什么。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 session