私は現在、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";
}
}
}
わかりません...どんな助けでも大歓迎です!ありがとうございました!!