我有一個奇怪的問題與Windows身份驗證。我們有一個asp.net webforms應用程序,其中我們有一個使用Windows身份驗證的文件夾。此文件夾已針對IIS中的Windows身份驗證正確配置。該應用程序通過web.config使用.net模擬。當我們使用Windows身份驗證的瀏覽到一個頁面此文件夾中:當前windowsidentity與當前的請求用戶身份一樣windows身份驗證
- system.web.httpcontext.current.user.Identity.Name返回做請求的用戶名(這是預期)
- System.security.principal.windowsIdentifier.getCurrent.Name返回,我們一直在我們的產品的新版本,請在運行應用程序(這也是預期)用戶
現在的名字長時間。我們現在發現行爲已經改變。當我們再次執行相同的測試時,httpcontext用戶名和principal.windowsidentity.getcurrent都會返回執行請求的用戶的名稱。
我們已經檢查了所有相關的代碼,我們似乎無法找到與此行爲有關的任何差異。我們在新版本中將應用程序從.Net 4.0轉換爲.Net 4.5.2,但是,當我們將舊版本轉換爲.Net 4.5.2時,行爲保持正確(這兩個屬性顯示不同的標識)似乎沒有區別。
想到哪裏尋找這種行爲的原因?
編輯: 調試告訴我,執行global.asax prerequesthandler時,身份已經有錯誤的值。在開始請求時,網站的模仿尚未執行,且當前標識是應用程序池標識
編輯2: 它似乎是服務器特定的。出於某種原因,舊版本在開發機器上正常工作,但新版本不支持。但是,新版本確實在部署服務器(我們的日常構建)上正常工作。任何人有任何關於可能的原因的指針?