同僚からのフィードバック (ありがとう、Eirik!)、@KennyZ のコメント、および多くの Google 検索に基づいて、これが最善/唯一の方法であることがわかりました。参考までに、およびこの質問を見ている他の人のために、web.config+connectionStrings.config から AD 設定を取得し、そのデータを使用して特定のユーザーの表示名を AD に照会するための便利なコードを次に示します。
var membershipSection = (MembershipSection)WebConfigurationManager.GetSection("system.web/membership");
var providerSettings = membershipSection.Providers["ActiveDirectoryMembershipProvider"];
var connectionStringName = providerSettings.Parameters["connectionStringName"];
var adUser = providerSettings.Parameters["connectionUsername"];
var adPassword = providerSettings.Parameters["connectionPassword"];
var adConnection = WebConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
var adReference = new DirectoryEntry(adConnection, adUser, adPassword);
var search = new DirectorySearcher(adReference) {Filter = string.Format("(mail={0})", username)};
search.PropertiesToLoad.Add("displayName");
SearchResult result = search.FindOne();
if (result != null)
{
var resultCollection = result.Properties["displayName"];
if (resultCollection.Count > 0)
{
var displayName = resultCollection[0].ToString();
...
}
}
注: これは、ユーザーの電子メール アドレスにマップされるため、web.config でを使用userPrincipalName
していることを前提としています。attributeMapUsername