相关疑难解决方法(0)

如何从Active Directory获取用户的电子邮件地址?

我试图在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)

任何人都可以看到问题或指向正确的方向吗?

c# active-directory

23
推荐指数
2
解决办法
5万
查看次数

使用Windows身份验证时获取Active Directory信息?

我在我的asp.net MVC 3应用程序上使用Windows身份验证.有没有办法从用户目录中获取用户信息?

我知道我可以使用User.Name.Identity,这适用于登录名.但是如何从活动目录中获取用户名,姓氏甚至描述或Office.这可以通过.net吗?

.net asp.net-mvc active-directory

13
推荐指数
2
解决办法
2万
查看次数

ASP.NET MVC Windows身份验证和DirectoryServices - 获取当前用户的邮件地址会引发InvalidCastException

我正在使用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

4
推荐指数
1
解决办法
5263
查看次数