2014-04-29 94 views
0

我使用Hosting Environment類下的DirectorySearch.FindOne()從Active Directory中檢索用戶詳細信息。它在localhost中工作正常,但是當我把它放在服務器上時,它會拋出一個錯誤。DirectorySearch.Findone()在服務器中部署時不起作用?

即使在IIS中,我已將我的ApplicationPoolIdentity更改爲Network service,但也沒有用。

我是否需要在web.config中添加其他內容才能使其正常工作。以下是我的代碼。

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     strrUser = txtUserName.Text; 
     strPassword = txtPWD.Text; 
     role = txtRole.SelectedItem.Value; 

     //string selectedrole = txtRole.SelectedValue; 
     using (PrincipalContext pContext = new PrincipalContext(ContextType.Domain)) 
     { 
      if (pContext.ValidateCredentials(strrUser, strPassword)) 
      { 
       SearchResult result; 
       using (HostingEnvironment.Impersonate()) 
       { 
        DirectorySearcher ds = new DirectorySearcher(); 
        ds.SearchScope = SearchScope.Subtree; 
        ds.ReferralChasing = ReferralChasingOption.All; 
        ds.Filter = String.Format("(&(objectCategory=person)(sAMAccountName={0}))", strrUser); 

        result = ds.FindOne(); 

       } 
       if (result != null) 
       { 
        DirectoryEntry entry = result.GetDirectoryEntry(); 
        employeeID = entry.Properties["physicaldeliveryofficename"].Value.ToString(); 
        username = entry.Properties["displayName"].Value.ToString(); 
       } 
+1

'在服務器中拋出錯誤'錯誤是什麼? – Nathan

+0

描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 異常詳細信息:System.Runtime.InteropServices.COMException:指定的域不存在或無法聯繫。 – user3585252

+0

以上是我得到的錯誤..但根據我的知識,它試圖訪問我想要的相同somain。此外,同一組編碼正在爲另一個託管在另一個端口中同一服務器上的應用程序成功運行。但我不認爲它的端口問題作爲登錄頁面,然後主要憑證驗證使用主要上下文類ae工作良好,但不findone() – user3585252

回答

0

不要在網絡服務憑據下運行代碼。創建一個可以搜索AD的自定義用戶,然後使用該用戶運行該池,或模擬它以運行該代碼。

這個工程對本地主機的原因是因爲您通常使用自己的用戶來測試這個......另一個原因是,也許你是不是搜索你認爲你的域...

反正,你應該發佈錯誤...

+0

嗨萊昂納多,感謝您的快速回復。即使我嘗試使用自定義帳戶(服務器憑據和管理員憑據)。另外,我確信它只是試圖訪問正確的域名,因爲在錯誤發生之前它成功地檢查用戶名和密碼,並且在嘗試使用findone()來檢索用戶詳細信息時發生錯誤。另外,在我的webconfig中,可以做任何事情來使它工作?..因爲我嘗試使用。 – user3585252

+0

描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。異常詳細信息:System.Runtime.InteropServices.COMException:指定的域不存在或無法聯繫。過去三天四天我遇到了這個單一的錯誤。請幫助.. – user3585252

+0

它完全驗證相同域中的憑據,但無法檢索憑證詳細信息。 – user3585252

相關問題