2010-05-13 20 views
2

我需要通過檢查指定域中是否存在這樣的用戶名來驗證LDAP用戶。對於此我使用此代碼 -Active Directory登錄 - DirectoryEntry不一致的異常

DirectoryEntry entry = new DirectoryEntry("LDAP://" + strDomainController); 
DirectorySearcher searcher = new DirectorySearcher(entry); 
searcher.Filter = "SAMAccountName=" + strUserName; 
SearchResult result = searcher.FindOne(); 
return (result != null) ? true : false; 

這是一個類庫,我intened引用和使用無論我需要在我的項目此功能的方法。

爲了測試這個,我創建了一個簡單的測試應用程序。測試發生這樣的 -

Console.WriteLine(MyClassLib.MyValidateUserMethod("UserName", "Domain",ref strError).ToString()); 

我現在面臨的問題是,這工作得很好,當我和我的testapp,但在我的項目進行測試,當我嘗試用同樣的方法用相同的憑據 - 在DirectoryEntry對象拋出"System.DirectoryServices.DirectoryServicesCOMException"異常,並且search.Filter失敗並拋出ex = {「登錄失敗:未知用戶名或錯誤密碼。\ r \ n」}異常。

我試過模擬,但沒有幫助。不知怎的,同樣的方法在mytestapp中工作正常,並且在我的項目中不起作用。這兩個應用程序都在我的本地開發機器中。我錯過了什麼?有任何想法嗎?

回答

1

我嘗試了幾乎所有可能的解決方案,我可以在每個這樣的線程上找到,但我仍然無法解決它。

我試圖重做整個事情,然後它的工作。我認爲,負責它與我的測試應用程序而不是我的項目一起工作的原因是,我的項目存儲在網絡位置,我的測試應用程序存儲在我的PC的硬盤驅動器中。

當我將我的項目複製到我的電腦硬盤上時,它開始正常工作。我最好的猜測是,由於項目位於網絡上,可能沒有足夠的權限授予LDAP驗證。

+0

你使用模擬,還是當前的Windows用戶? – 2010-05-21 14:57:53

+0

我正在使用模擬。 – pavanred 2010-05-21 18:33:40

0

您確定您的測試應用程序和您的真實應用程序是以同一用戶身份運行的,因此它們在AD中具有相同的權限?雖然DirectoryEntry對象引發的異常很難排除故障,但這是我要檢查的第一件事。它是一個什麼樣的項目 - 網絡應用程序或桌面應用程序?如果它是一個Web應用程序,那麼運行應用程序池的用戶可能沒有必要的權限。

+0

我在我的測試和我的項目中都使用了相同的用戶。該項目是一個Web應用程序。 用戶擁有什麼權限,如果同一個應用在同一個應用中工作,那麼它應該在另一個應用中?打我.. – pavanred 2010-05-13 07:22:04