ASP.NET MVC中每用户变量的Session替代方法

lik*_*ski 4 .net asp.net asp.net-mvc iis-7

我正在开发一个MVC 3应用程序,该应用程序将托管在具有多工作进程设置的Web场中.有大约十几个变量存储在Session中,但由于IIS设置而丢失.

通过迷失我的意思是当登录过程成功时,我通过记录看到我已经设置了Session变量但是在重定向操作之后并且在着陆Controller Action上,Session变量通常是空的.我不确定这是否相关,但这是在HTTPS中.

我们正在考虑将存储在Session out中的用户特定设置移动到其他机制的可能性,但是有一个变量我将无法使用它.鉴于上述部署环境,我有以下问题.

  1. Cookie是我唯一的(最好的?)替代方法来存储用户特定设置的会话变量吗?
  2. 如果是这样的话,是否存在一种用于编写cookie的安全机制,因此它们无法被操纵,仍然可以在多服务器环境中读取?
  3. 据我所知System.Runtime.Caching,在上面的IIS配置中运行时遇到了同样的问题.真的吗?

Ica*_*rus 7

Cookie是我唯一的(最好的?)替代方法来存储用户特定设置的会话变量吗?

不 - 他们是最糟糕的方法.想到的三个原因:

  1. 他们可以被操纵.
  2. 它们随着客户端到服务器的每个请求一起旅行 - 效率低下.
  3. 它们将为您的实现添加更多复杂性,因为您必须开始考虑以不同方式保护它们.

如果是这样的话,是否存在一种用于编写cookie的安全机制,因此它们无法被操纵,仍然可以在多服务器环境中读取?

见上面的答案.

据我所知,在上面的IIS配置中运行时,System.Runtime.Caching会遇到同样的问题.真的吗?

真正.您应该使用任何超出proc的州提供商.您可以使用Sql Server存储会话数据 - 提供您的对象可序列化,显然 - 或状态服务器模式 mode="stateserver"

请阅读此处了解更多详情