1

私は現在、ADから現在ログインしているユーザーのGivenNameとSurnameを取得する方法を使用しています。このサイトにアクセスするすべてのユーザーは、AD 内の内部ユーザーになります。

これが機能しているユーザーもいれば、FindByIdentity を試行したときに UserPrincipal が NULL を返しているように見えるユーザーもいます。これはOUのことですか?参照する OU を指定しません。現在ログインしているユーザーをログイン名で検索し、AD 構造のどこにいても、その名/姓を取得したいだけです...

以下は私のメソッドのコードです...現在のユーザーの「User.Identity.Name」を含むパラメーターを受け取ります...

public static string GetFullName(string userIdentityName)
{            
    using (var context = new PrincipalContext(ContextType.Domain))
    {
        using (UserPrincipal principal = UserPrincipal.FindByIdentity(context, userIdentityName))
        {
            return principal != null ? principal.GivenName + " " + principal.Surname : "User Not Found";
        }
    }
}

また、ページに User.Identity.Name を出力します。これは誰にとっても機能するため、メソッドに渡されたパラメーターが設定されていることがわかります。

奇妙なのは、ユーザー ID 名 (通常は null を返す) をハードコーディングできることです。それ以外の場合は、まったく同じものがパラメーターを介して渡されますが、コードは機能します。何かのようなもの:

public static string GetFullName(string userIdentityName)
{
    var username = "DOMAIN\\username";

    using (var context = new PrincipalContext(ContextType.Domain))
    {
        using (UserPrincipal principal = UserPrincipal.FindByIdentity(context, username))
        {
            return principal != null ? principal.GivenName + " " + principal.Surname : "User Not Found";
        }
    }
}

わかりません...どんな助けでも大歓迎です!ありがとうございました!!

4

0 に答える 0