0

我需要访问 ASP.NET MVC 2 应用程序的控制器中的用户特定数据。我的控制器类有 2 个控制器方法:

[ControllerSessionState(ControllerSessionState.ReadOnly)]
public class CalendarController : BasicController
{
    [Authorize]
    public ActionResult ControllerMethod1()
    {
       //reads session specific data
    }

    [Authorize]
    public ActionResult ControllerMethod1()
    {
       //stores session specific data
    }
}

我希望请求被并行化,即ControllerMethod1应该能够与ControllerMethod2并行运行。出于这个原因,我将会话标记为ReadOnly。但是,ControllerMethod2 必须将数据写入“会话”。由于这是不允许的,我考虑将我的数据存储在 HttpContext.Application 中。我可以在对象名称中对用户 ID 进行编码,例如:

 HttpContext.Application["Data" + currentUser.UserId] = <<my_data>>;

我可以这样做吗?这种方法有什么缺点吗?

4

1 回答 1

1

不要指定ControllerSessionState.ReadOnly显然需要在会话存储中写入的控制器。

相反,尝试以另一种方式解决并发问题(例如使用适当的锁定机制)。

另外,想想同一个用户同时访问这两种方法的几率是多少。我认为这些可能性是如此之低,以至于在这种情况下不值得考虑并发性。

于 2012-10-13T20:04:05.187 回答