2017-07-16 60 views
0

我有2个不同的登录用户。我在两个帐户中都访问同一页面,并在同一时间进行刷新。MVC .NET用户从其他用户获取数据(如果两者都调用相同的函数)

在该网页上我有Ajax调用其调用函数:

public JsonResult GetAppointments() 
    { 
     var userId = User.Identity.GetUserId(); 

     var eventList = from a in db.Appointments 
         where a.UserId == userId 
         select new 
         { 
         ... 

所以应该返回不同的约会,基于用户ID。

但由于某些原因,一个用户从其他用户获取数据。 (在页面上我得到了两个用户相同的数据)

它看起来像从第一用户占用线程函数调用,以及第二用户从该线程获得的数据,而不是从自己的函数调用。

任何人都知道,这怎么可能,为什么会出现这种情况?

编辑: 当这种情况发生时,我击退第二个用户并得到:“反伪造cookie标记和表单字段标记不匹配。”错误。似乎第二个用户也得到了来自第一个用户的表单字段令牌,不知道如何。

+1

它与你的方法无关。同时在2个不同的浏览器中尝试它。可能您已注销并使用以前的帐户使用不同的选项卡保持打开状态并登录。这就是为什么你会得到相互矛盾的结果。 – AHBagheri

+0

是的,我在2个不同的浏览器中同时尝试过,使用2个不同的帐户登录,然后进入同一页面,并得到此问题。我清除了缓存,之前确定的cookie,并多次测试,以确保问题存在,并且每次都会发生 –

回答

0

我发现问题了。

在控制我有:

OutputCache(NoStore = true, Duration = 1, VaryByParam = "") 

我改变持续时间= 0和现在的一切工作正常。