14

ユーザーが内部 ASP.NET 4.0 アプリケーションの Active Directory (AD) グループのメンバーであるかどうかを判断しようとしています。以下のコードは、ユーザーが AD グループのメンバーでない場合に、最後の行 (return ステートメント) で「アンロードされた appdomain にアクセスしようとしました」という例外エラーをスローします。

public static bool IsInADGroup(string userName, string groupName)
{
    var principalContext = new PrincipalContext(ContextType.Domain);
    UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, userName);
    if (userPrincipal == null)
        return false;

    GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(principalContext, groupName);
    if (groupPrincipal == null)
        return false;

      return userPrincipal.IsMemberOf(groupPrincipal);
}

修正方法またはその他の回避策に関するアイデアはありますか?

4

2 に答える 2

16

このバグはあなたの問題でしょうか?

この回避策を使用して同じ問題を解決しました。

           using (DirectoryEntry rootDse = new DirectoryEntry("LDAP://rootdse"))
        {
            var dnsName = rootDse.Properties["dnsHostName"].Value.ToString();
            using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dnsName)) {}
于 2011-10-26T10:44:57.540 に答える
7

ここで同じ問題。

ホットフィックスで解決された ADSI のバグのようです。Windows 7 SP1 および Windows Server 2008 R2 SP1 には修正プログラムが含まれていないため、開発用コンピューターおよびサーバー環境に手動で展開する必要があります。

http://support.microsoft.com/kb/2683913

于 2012-11-27T22:25:38.587 に答える