ASP.Net Context.User.Identity古怪

时间:2009-03-27 19:34:32

标签: asp.net httpcontext

我有一个使用表单身份验证的ASP.Net 3.0 SP1应用程序。

在测试时,我注意到如果我查看了另一个用户正在查看的页面,则其他用户名将显示在我的母版页的控件中。 Context.User.Identity也适用于其他用户。

如果我切换到其他人没有查看Context.User.Identity的页面是正确的。

我难过并且很感激建议 提前谢谢。
克里斯

3 个答案:

答案 0 :(得分:3)

可能因为页面启用了输出缓存:如果页面在服务器端缓存且VaryByParam = none,则所有用户都将从缓存中获取相同的副本。

我只能想到可能导致这种情况的两件事:

  • 您将用户特定数据存储在请求之间共享的位置(例如,在静态(C#)/共享(VB)变量中,在ASP.NET缓存中,在Application对象中,... )

  • 您已启用输出缓存。

检查:

  • aspx和ascx文件中的OutputCache指令,

  • web.config文件中的system.web / caching元素,

  • 调用HttpCacheability.SetCacheability方法。

如果找不到问题:

  • 尝试创建应用程序的简化版本,直到获得仍然可以再现不良行为的最简单版本。

  • 在这个简化过程中,您可能会自己发现问题。如果没有,请从简化版本发布一些代码。

答案 1 :(得分:2)

使用无cookie浏览器时,请确保您没有使用身份验证票证附带的链接。

还要确保查看可能在请求之间共享数据的任何其他内容。就像DOK说的那样,但是记住应用程序并不是你做到这一点的唯一方法。

答案 2 :(得分:0)

看起来这个问题是因为我设置了targetframe =“_ self”或Target =“_ self”。我删除了所有这些,一切似乎都运行良好。

另一个注意事项:如果我要刷新页面,它还会显示具有正确用户的页面。