Asp.net
更改使用者登錄名後驗證錯誤
我們有一個使用者最近更改了名稱。
假設舊使用者名是 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);這將返回 old.name,而不是 new.name。
我檢查了 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
解決方法
要變通解決此問題,請禁用域成員電腦上的本地 SID 記憶體。為此,請按照下列步驟操作:
- 打開系統資料庫編輯器。
要在 Windows XP 或 Windows Server 2003 中執行此操作,請點擊“開始” ,點擊**“執行”**,鍵入 regedit,然後點擊“確定” 。
要在 Windows Vista 和更高版本中執行此操作,請點擊“開始”,在“**開始搜尋”框中鍵入 regedit ,然後按 Enter。 2. 找到並右鍵點擊以下系統資料庫子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa3. 指向新建**,然後點擊DWORD 值。 4. 鍵入 LsaLookupCacheMaxSize,然後按 Enter。 5. 右鍵點擊LsaLookupCacheMaxSize,然後點擊修改。 6. 在數值數據框中,鍵入 0,然後點擊確定。 7. 退出系統資料庫編輯器。