0

我想從不同的域用戶的細節,但它拋出以下錯誤:如何從不同的域「System.Runtime.InteropServices.COMException」用戶詳細信息

An exception of type 'System.Runtime.InteropServices.COMException' occurred in System.DirectoryServices.dll but was not handled in user code

守則如下圖所示:

// Getting domain 
var context = new DirectoryContext(DirectoryContextType.Domain, "alpha"); 
Domain domain = Domain.GetDomain(context); 

using (DirectorySearcher searcher = new DirectorySearcher()) 
{ 
    var de = new DirectoryEntry(domain.Name); 
    searcher.SearchRoot = de; 
    searcher.SearchScope = SearchScope.Subtree; 
    searcher.PropertiesToLoad.Add("sAMAccountName"); 
    searcher.Filter = string.Format("(&(objectClass=user)(sAMAccountName={0}))", "myusername"); 

    // *** ERROR HERE ***   
    var results = searcher.FindAll(); 
} 

我已經嘗試運行Visual Studio作爲域管理員,但沒有運氣。

在此先感謝。

+0

什麼都在內部例外? – danish

+0

沒有它的null。 ..... – Scorpion

+0

您是否試圖從與您連接的域不同的域讀取?您是否嘗試過在DirectoryEntry構造函數中將完整的LDAP字符串指定給DC(LDAP:// xxx)? – scheien

回答

0

以下代碼僅在使用System.DirectoryServices.ActiveDirectory添加名稱空間並添加引用時才起作用。

// Get user name 
string userName = User.Identity.Name; 
var domainName = username.Split('\\')[0]; 

// Getting domain 
var directoryContext = new DirectoryContext(DirectoryContextType.Domain, domainName); 
Domain domain = Domain.GetDomain(directoryContext); 

using (PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domain.Name)) 
{ 
    using (UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName)) 
    { 
     if (user != null) 
     { 
      // Get details here 
      var name = user.GivenName; 
     } 
    } 
} 
+0

在我到達PrincipalContext之前完美地工作,然後拋出與問題相同的異常。我正在閱讀不同的域名,所以我確信這是問題的一部分。 – John81

相關問題