2015-07-01 181 views
0

在我的ASP.net Web應用程序中,在用戶通過表單身份驗證進行身份驗證之後,我試圖讀取用戶名稱從HttpContext.Current.User.Identity.NameASP.net:HttpContext.Current.User.Identity.Name在IIS 7.5中爲空,但不在IIS Express上

當我在運行IIS Express的個人計算機上運行這個功能時,它工作得很好。當我在IIS 7.5下的服務器上運行它時,此表達式始終評估爲string.Empty

這是爲什麼,它如何被緩解?

注意:這不是「HttpContext.Current.User.Identity.Name is Empty」的重複,因爲這個問題是關於內置到Visual Studio中的Web服務器。

注2:在我的情況下匿名訪問尚未關閉。如果這確實是問題的原因,請你解釋爲什麼?

回答

2

HttpContext.Current.User.Identity.Name使用LDAP來確定你的Windows用戶名是什麼。

這是有效的,因爲當匿名訪問被關閉時,您的計算機需要使用Windows標識「登錄」才能訪問該網站(而不是匿名)。因此,該網站知道你是誰,並且可以返回正確的數據。

如果仍然保留匿名訪問權限,您的計算機將使用最快/最簡單的訪問方式(匿名)並將網頁返回給您。 IIS然後只知道你是匿名的,所以不能給你一個名字。

+0

謝謝!任何想法爲什麼在IIS Express中起作用? – urig

+1

我認爲它已經擁有憑據,因爲它在本地運行。 – oppassum

+0

獲取登錄用戶信息的正確方法是通過「Page.User」或「Controller.User」。此外,IIS和IIS Express不同,https://blog.lextudio.com/2015/04/web-application-differences-in-visual-studio-and-iis/ –