我需要访问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中。我可以在对象的名称中编码user-id,例如:
HttpContext.Application["Data" + currentUser.UserId] = <<my_data>>;
我可以这样做吗?这种方法有什么缺点吗?
答案 0 :(得分:1)
不要为明显需要在会话存储中写入的控制器指定ControllerSessionState.ReadOnly
。
相反,尝试以另一种方式解决并发问题(例如使用适当的锁定机制)。
另外,考虑同一用户在同一时间访问这两种方法的几率。我认为这些可能性非常低,以至于在这种情况下并发性并不值得考虑。