0

我的團隊使用IIS Express在VS 2013的調試,我查詢Active Directory時的廣告組正在以下錯誤:查詢AD拋出System.Runtime.InteropServices.COMException

類型的異常「 System.Runtime.InteropServices.COMException」發生在System.DirectoryServices.AccountManagement.dll但在用戶代碼中沒有處理

其他信息:多個連接到服務器或由同一用戶共享 資源,使用一個以上的用戶名稱,不允許 。斷開與服務器的所有以前連接或共享 資源,然後重試。

在下面的代碼中,錯誤是由GetAuthorizationGroups()引發的。

代碼:

public List<String> GetAllADGroups(String userName) 
{ 

    List<String> groups = new List<String>(); 

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, this.Domain, this.LDapUserName, this.LDapPassword); 
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName); 
    // error on next line 
    foreach(Principal group in user.GetAuthorizationGroups().OrderBy(x => x.Name)) 
    { 
     if (group.ContextType == ContextType.Domain && !String.IsNullOrEmpty(group.Name)) 
     { 
      groups.Add(group.Name); 
     } 
    } 
    ctx.Dispose(); 
    return groups; 
} 

由於這個項目是在TFS,我從他們的開發服務器上運行該代碼3名開發人員。我只在其中一臺服務器上收到此錯誤。在引發此錯誤的服務器上;當我從IIS運行該網站時,代碼工作正常。因此,它使我想到的問題是與下列之一:

  1. IIS快遞
  2. 服務器配置
  3. VS 2013配置

任何幫助表示讚賞。

回答

0

經過進一步調查,我們發現有問題的服務器無法連接到導致問題的域控制器。奇怪的是,這隻發生在對域控制器的某些調用中。有些電話有效,有些則沒有。我們得出結論,重建服務器並從頭開始更容易。隨着新服務器的建成,我們沒有任何問題。

這是一個很好的答案嗎?可能不會。在這種情況下,服務器病了,我們安樂死了。有時候重新開始比較容易,然後花費3天的時間試圖找出問題(我們已經這麼做了)。