仅在服务器上的ASP.NET网站中无法访问AD电子邮件地址

时间:2016-07-13 13:14:58

标签: asp.net vb.net visual-studio iis active-directory

我目前使用IIS设置了Intranet网站。它使用Windows身份验证。它希望Active Directory通过以下两行代码获取用户的电子邮件地址:

        Dim userStr, userEmail As String
        userStr = Page.User.Identity.Name.ToString
        userEmail = System.DirectoryServices.AccountManagement.UserPrincipal.Current.EmailAddress

然后,此电子邮件用于通过SMTP客户端发送电子邮件。我的问题是,当我的网站托管在我们的服务器上时,电子邮件地址似乎无法访问。此代码在我的localhost上完美运行。我将我的页面设置为在访问后显示电子邮件地址,并且它在服务器上保持空白。

谁能告诉我可能会发生什么?似乎我的一些事件没有解雇,但我认为这是由于空的电子邮件地址。

谢谢

1 个答案:

答案 0 :(得分:1)

我最终使用了以下代码:

            Dim userStr, userEmail As String
            userStr = Page.User.Identity.Name.ToString
            Using HostingEnvironment.Impersonate()
                Dim ctx As PrincipalContext = New PrincipalContext(ContextType.Domain)
                Dim xUser As UserPrincipal = UserPrincipal.FindByIdentity(ctx, userStr)
                userEmail = xUser.EmailAddress
            End Using

事实证明,原始问题中的代码试图返回我在IIS中使用的身份的电子邮件地址。通过使用此代码,我可以返回当前用户的电子邮件地址。