我试图在AD中获取用户的电子邮件地址但没有成功.
String account = userAccount.Replace(@"Domain\", "");
DirectoryEntry entry = new DirectoryEntry();
try {
DirectorySearcher search = new DirectorySearcher(entry);
search.PropertiesToLoad.Add("mail"); // e-mail addressead
SearchResult result = search.FindOne();
if (result != null) {
return result.Properties["mail"][0].ToString();
} else {
return "Unknown User";
}
} catch (Exception ex) {
return ex.Message;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到问题或指向正确的方向吗?
我在我的asp.net MVC 3应用程序上使用Windows身份验证.有没有办法从用户目录中获取用户信息?
我知道我可以使用User.Name.Identity,这适用于登录名.但是如何从活动目录中获取用户名,姓氏甚至描述或Office.这可以通过.net吗?
我正在使用ASP.NET MVC 4和Windows身份验证.当我使用VisualStudio时,一切正常,但是当我部署我的网站时,会抛出异常.
var emailAddress = UserPrincipal.Current.EmailAddress;
Run Code Online (Sandbox Code Playgroud)
抛出:
无法将类型为"System.DirectoryServices.AccountManagement.GroupPrincipal"的对象强制转换为"System.DirectoryServices.AccountManagement.UserPrincipal".
其余的工作正常.用户可以进行身份验证,我可以获取用户名等.
编辑:
我在IIS上启用了Impersonation.现在我得到以下异常:
[DirectoryServicesCOMException(0x80072020):发生操作错误.] System.DirectoryServices.DirectoryEntry.Bind(布尔throwIfFail)781 System.DirectoryServices.DirectoryEntry.Bind()44 System.DirectoryServices.DirectoryEntry.get_AdsObject()42 System.DirectoryServices.PropertyValueCollection.PopulateList()29周
的System.DirectoryServices .PropertyValueCollection..ctor(DirectoryEntry entry,String propertyName)+119
System.DirectoryServices.PropertyCollection.get_Item(String propertyName)+163
System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer()+535649 System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit( )+51 System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()+ 141 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()+42 System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context,Type principalType,Nullable`1 identityType, String identityValue,DateTime refDate)+27
System.DirectoryServices.Account Management.Principal.FindByIdentityWithType(PrincipalContext context,Type principalType,IdentityType identityType,String identityValue)+146
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context,IdentityType identityType,String identityValue)+44
System.DirectoryServices.AccountManagement.UserPrincipal.get_Current ()390 Jericho.MVC.HtmlHelperExtensions.GetUser(的HtmlHelper的HtmlHelper)在C:\发展\杰里科\ Jericho.MVC\HtmlHelperExtensions.cs:48
我能做什么?
c# asp.net-mvc directoryservices windows-authentication userprincipal