使用.net 1.1获取AD属性

时间:2016-06-22 03:50:53

标签: .net vb.net active-directory ldap

以下代码在vb 2005中完美运行,但无法在.net 1.1中运行。

Private Function GetActiveDirUserDetails(ByVal username As String) As String
        Dim dirEntry As System.DirectoryServices.DirectoryEntry
        Dim dirSearcher As System.DirectoryServices.DirectorySearcher
        Try
            dirEntry = New System.DirectoryServices.DirectoryEntry("LDAP://123.45.67.89:101/DC=mydomain,DC=com")
            dirSearcher = New System.DirectoryServices.DirectorySearcher(dirEntry)
            dirSearcher.Filter = "(samAccountName=" & username & ")"
            Dim sr As DirectoryServices.SearchResult = dirSearcher.FindOne()
            If sr Is Nothing Then
                Return False
            End If

            Dim de As System.DirectoryServices.DirectoryEntry = sr.GetDirectoryEntry()
            'Dim firstname = de.Properties("GivenName").Value.ToString()
            'Dim lastname = de.Properties("sn").Value.ToString()
            'Dim fullname = de.Properties("DisplayName").Value.ToString()

            Dim ObjFirstName As String = ""
            Dim ObjLastName As String = String.Empty
            Dim ObjEmail As String = ""

            Try
                ObjEmail = de.Properties("mail").Value.ToString()
                ObjFirstName = de.Properties("GivenName").Value.ToString()
                ObjLastName = de.Properties("sn").Value.ToString()

            Catch ex As Exception
                ObjFirstName = de.Properties("DisplayName").Value.ToString()
            End Try

            MsgBox(ObjFirstName + ObjLastName + ObjEmail)
            Return ObjFirstName
            Return ObjLastName
            Return ObjEmail

        Catch ex As Exception ' return false if exception occurs 
            Return ex.Message
            MsgBox(ex.Message)
        End Try
    End Function

当我按下按钮时,它什么也没显示。我想在这里获得AD属性。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您似乎没有加载任何属性,即

dirSearcher.PropertiesToLoad.Add("mail")
dirSearcher.PropertiesToLoad.Add("GivenName")
dirSearcher.PropertiesToLoad.Add("sn")

答案 1 :(得分:0)

如果VB中的目标框架与1.1不同(默认情况下是2.0),那么将项目属性中的更改为1.1,摆脱try..catch并再次运行代码以确保它“在VB中”工作。如果它可以工作 - 那么问题很可能不是.net版本,而是你在“VB之外”运行应用程序的方式。例如,默认情况下,在本地开发框中调试代码时,您运行的帐户下的代码可能与用于运行已编译应用程序的帐户不同。在这种情况下,使用AD的代码可能会失败,因为它使用其他用户帐户(例如计算机帐户而不是用户帐户,或者AD中的权限较少)。