2011-07-18 354 views
0

我有一個使用Windows身份驗證的ASP.Net應用程序,我指定了一個位於我的AD和我的本地開發框中的角色,看起來都很好。當我部署到我的測試Web服務器時,通過ASP LoginName控件顯示的用戶名顯示的是服務器本地的身份,而不是我當前登錄的域中的實際帳戶,與我的本地PC一樣。是什麼賦予了?ASP.Net Windows身份驗證 - 用戶身份登錄到服務器

UPDATE: 我使用Windows XP SP3與發展IIS服務器(IIS沒有,即使已安裝IIS)。我創建了一個新的測試網站(來自VWD2010 Express的空網頁模板)。只有我做了配置,到目前爲止是Default.aspx頁面上,我說:

<asp:LoginName ID="LoginName1" runat="server" FormatString="Welcome {0}!" /><br /> 
<asp:Label ID="RoleLabel" runat="server"></asp:Label> 

然後在後面的代碼,我補充說:

if (User.IsInRole("IPSCODOM\\SAFETY OBSERVATION")) 
{ 
    this.RoleLabel.Text = "You are in the SAFETY OBSERVATION role"; 
} 
else { 
    this.RoleLabel.Text = "You are NOT in the proper role!"; 
} 

現在,當我開始調試,屏幕顯示如下:

這是我期待的輸出。但是,當我將測試服務器(具有IIS 6.1的Server 2003 R2)部署到站點(再次沒有其他配置)時,結果會非常不同。用戶返回的是我們用來登錄到該服務器的用戶(但是是一個域帳戶)。應用程序池設置爲使用網絡服務帳戶(我已嘗試全部三種,系統,本地服務和網絡服務)登錄,萬維網發佈服務正在使用本地系統帳戶登錄。我禁用了網站上的匿名訪問,當我瀏覽到網站時,它又顯示與我登錄的用戶帳戶不同的用戶帳戶。

我在做什麼錯?

+0

如果這出現在瀏覽器上,或許瀏覽器自動完成選項認爲您正在瀏覽該服務器上的另一個Web應用程序? –

+0

naah,看看我下面的評論,現在我試圖在本地機器上使用IIS 7.5 Express,並且User對象沒有配置文件。不知道我在這裏做錯了什麼......認爲這很簡單。 – Keith

+0

好的,所以我在當前的設置中添加了更多細節。檢查上面的更新... – Keith

回答

0

實際的問題是,當我需要將一些文件部署到測試服務器,並且我無法訪問驅動器的根目錄時。當我瀏覽根目錄時,會出現登錄對話框,並以登錄網頁時顯示的用戶身份登錄。我忘了我做了這件事,現在我覺得自己像個白癡。請原諒我的無知,但請記住這個問題,以防其他人腦部放屁。

要取消登錄順序,我進入了控制面板>>用戶帳戶>>高級>>管理密碼,並刪除了我正在瀏覽的服務器的憑據。然後,它正確地拿起我的用戶帳戶。

+0

我沒有在這個盒子外面考慮驅動器的根目錄,%WINDIR%下的任何東西(在大多數機器上是C:\ Windows)和其他幾個目錄對IIS來說都是粗暴的(除非你破解安全性,這不是一個好主意)。謝謝你的跟進。 –

0

什麼是「本地服務器」身份。在不瞭解設置的情況下,我會首先檢查您是否已將服務器上的IIS實例設置爲使用Windows身份驗證,因爲這不是默認設置。如果修復失敗,那麼請確保您沒有熱接入IIS中的服務以使用特定的帳戶。

+0

好的,所以現在我已經在Windows XP上設置了IIS 7.5 Express,並將應用程序設置爲使用它運行。我在我的web.config中有以下代碼,它告訴我它沒有被授權,所以我在頁面加載時檢查了User對象,並且用戶對象具有空白屬性,但對象不爲空。 Keith