2

我正在使用 ASP.Net(使用 VB.Net)应用程序。在本地测试和工作此代码块执行得非常好。

Try
        Dim dc As PrincipalContext = New PrincipalContext(ContextType.Domain, "sanuk")
        Dim adUser As UserPrincipal = UserPrincipal.FindByIdentity(dc, IdentityType.Name, uId)
        Return adUser.EmailAddress
    Catch ex As Exception
        'Return "User Not Authenticated"
        Return ex.StackTrace
    End Try

然而,自从将它提升到我们的开发 Web 服务器进行初始测试后,我没有从 AD 获取用户电子邮件地址,而是收到此错误消息。

在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) 在 System.DirectoryServices.DirectoryEntry.Bind()
在 System.DirectoryServices.DirectoryEntry.get_AdsObject() 在 System.DirectoryServices.PropertyValueCollection.PopulateList()
在 System.DirectoryServices.PropertyValueCollection.. ctor(DirectoryEntry entry, String propertyName)
at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer()
at System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit()
at System.DirectoryServices.AccountManagement .PrincipalContext.Initialize()
在 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()
在 System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext 上下文,类型 principalType,Nullable`1 identityType,字符串 identityValue,DateTime refDate)
在 System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType (PrincipalContext context, Type principalType, IdentityType identityType, String identityValue) at System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context, IdentityType identityType, String identityValue) at ChangeControl.HelpersSystem.GetEmail(String& uId) in C:\Work\Simon \ChangeControl\ChangeControl\HelperClasses\HelpersSystem.vb:第 24 行

我环顾四周,这是我想要做的最接近的事情

以前类似但不是相同的问题。 这也 非常相似,与我所拥有的解决方案相同,但不适用于我

我需要帮助的是我需要提供哪些其他变量,因为我也尝试过使用用户名和密码,但这也不起作用并给出了同样的错误消息。

我也试过没有IdentityType太,但仍然遇到同样的问题。非常感谢任何和所有帮助。

4

1 回答 1

1

这听起来像是一个权限问题。检查网站正在运行的应用程序池,并确保它具有所需的访问权限。

您可能希望为此站点创建一个应用程序池,并让它以有权进行 Active Directory 调用的用户身份运行。

在您的本地计算机上,它可能具有它需要和工作的更高的访问权限。默认情况下,应用程序池无权访问任何内容。

于 2015-12-07T15:53:06.930 回答