我目前使用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上完美运行。我将我的页面设置为在访问后显示电子邮件地址,并且它在服务器上保持空白。
谁能告诉我可能会发生什么?似乎我的一些事件没有解雇,但我认为这是由于空的电子邮件地址。
谢谢
答案 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中使用的身份的电子邮件地址。通过使用此代码,我可以返回当前用户的电子邮件地址。