我们有一位最近更改了姓名的用户。
假设旧用户名是 old.name,新用户名是 new.name。
在 AD 中编辑详细信息并使用新用户名注销/登录后,我们的 ASP.NET 应用程序显示旧名称。
纯 ASP.NET,无 MVC,使用 Windows 身份验证。
获取用户名的代码为:
WindowsPrincipal wp = (WindowsPrincipal)HttpContext.Current.User;
String userName = wp.Identity.Name.Substring(wp.Identity.Name.IndexOf("\\") + 1);
这将返回旧名称,而不是新名称。
我检查了 IIS 日志文件,这些文件显示了新名称:
2011-04-05 11:41:44 W3SVC1 MARS 10.57.1.64 GET /eft/Default.aspx - 80 - 10.57.0.161 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2;+Trident/4.0;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;+.NET4.0C;+.NET4.0E) 401 2 2148074254
2011-04-05 11:41:44 W3SVC1 MARS 10.57.1.64 GET /eft/Default.aspx - 80 SANOMABP\new.name 10.57.0.161 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2;+Trident/4.0;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;+.NET4.0C;+.NET4.0E) 200 0 0
我们已经重新启动了应用程序池,我们已经检查了 AD 数据,并且我们不知道可能出了什么问题。
为了清楚起见,从评论中移出正确答案:
@paolo:你可以尝试看看support.microsoft.com/kb/946358 http://support.microsoft.com/kb/946358
解决方法
要解决此问题,请禁用域成员计算机上的本地 SID 缓存。为此,请按照下列步骤操作:
-
打开注册表编辑器。
要在 Windows XP 或 Windows Server 2003 中执行此操作,请单击Start, click Run,键入 regedit,然后单击OK.
要在 Windows Vista 及更高版本中执行此操作,请单击Start,在中输入regedit开始寻找框,然后按 ENTER。
-
找到并右键单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
-
指向New,然后单击双字值.
-
键入 LsaLookupCacheMaxSize,然后按 Enter。
-
右键点击LsaLookupCache最大大小,然后单击Modify.
-
In the 价值数据框中,键入 0,然后单击OK.
-
退出注册表编辑器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)