ASP.Net Httpcontext.Current.User显示了生成线程的最后一个用户

时间:2012-01-20 09:31:14

标签: c# asp.net security web-config windows-authentication

非常奇怪的问题我正面临ASP.Net和当前用户。

使用ASP.Net 4.0。

出于某种原因,HttpContext.Current.User.Identity.Name将用户身份报告为最后一个到达服务器的人。换句话说,它以某种方式并且出于某种原因缓存了身份。

见下: 使用我自己的用户名登录计算机1,它显示正常。 使用其他用户名登录计算机2,它显示正常。

刷新计算机1上的浏览器,它显示计算机2凭据!!!

我已经尝试了一切!我有一个自定义角色提供程序,我关闭并尝试了所有可能的设置。目前我的网络配置中有两行应该可以正常工作。

我在IIS中检查了以下内容: 匿名被禁用 Windows已启用 禁用会话状态!

要测试用户名,我这样做:

lblUserName.Text = HttpContext.Current.User.Identity.Name;

任何想法我做错了什么? 这可能是因为我使用的是NTLM而不是Kerberos吗?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

圣吸烟,这是一个多么愚蠢的问题!我通过撕开web.config来找到答案。

原来缓存是个问题。我在web.config中启用了以下内容:

<caching enabled="false">
  <profiles>
    <add duration="72:00:00" location="Client" extension=".aspx" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
    <add duration="72:00:00" location="Client" extension=".axd" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
    <add duration="72:00:00" location="Client" extension=".js" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
    <add duration="72:00:00" location="Client" extension=".css" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
    <add duration="72:00:00" location="Client" extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
    <add duration="72:00:00" location="Client" extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
    <add duration="72:00:00" location="Client" extension=".gif" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
  </profiles>
</caching>

禁用缓存修复了它! 多么奇怪的问题。