ActiveDirectoryからUserPrincipalを取得する際に問題が発生しました。まず、ローカル環境で使用しました(IISではなくASP.NET開発サーバーを使用)。
User usr = new User();
usr.SoeId = Request.ServerVariables["LOGON_USER"];
usr.IP = Request.ServerVariables["REMOTE_ADDR"];
usr.FirstName = UserPrincipal.Current.GivenName;
usr.LastName = UserPrincipal.Current.Surname;
そしてそれはうまくいきます。欲しいものを手に入れました。しかし、テスト環境にアプリケーションをインストールすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生しました。ここから解決策を試しました。
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
UserPrincipal up = UserPrincipal.FindByIdentity(pc, usr.SoeId);
return up.DisplayName;
// or return up.GivenName + " " + up.Surname;
}
しかし、それは機能しません。
Windows認証を使用しています。なりすましはtrueに設定されます。私を助けてください。