1

私はADについてあまり知りませんが、これが私がやろうとしていることであり、私が聞いている方向性です.

メール フィールドに電子メール アドレスを含む Active Directory のユーザーがいます。メールアドレスまたは通常のログインのいずれかを使用して、サイトにログインできるようにしたいと考えています。私のVBコードは、電子メールとしてフォーマットされていないテキストを入力して直接ログインするかどうか、または電子メールアドレスとしてフォーマットされているかどうかをチェックし、そのアドレスを使用して舞台裏でログインを検索します.

DirectorySearcher が適していると聞いたことがありますが、それを実装することはできませんでした。ご支援いただければ幸いです。

Dim theUser As String = String.Empty
Dim strDomain As String = "DEV"
Dim directoryEntryMTA As String = "LDAP://dc=dev,dc=ad,dc=mtaaccount"

            If Not String.IsNullOrEmpty(txtUsername.Text) Then
                If txtUsername.Text.IndexOf("@") > -1 Then
                    Dim entry As New DirectoryEntry(directoryEntryMTA)
                    Dim search As New DirectorySearcher(entry)
                    search.Filter = "mail=" & txtUsername.Text
                    search.PropertiesToLoad.Add("SAMAccountName")
                    Dim result As SearchResult = search.FindOne()

                    If result IsNot Nothing Then
                        theUser = strDomain + "\" + result.ToString()
                    Else
                        ' ADD CODE IF DIRECTORY SEARCHER DOES NOT FIND ANY USER WITH SUPPLIED EMAIL
                    End If
                Else
                    theUser = strDomain + "\" + txtUsername.Text
                End If
            End If
4

1 に答える 1

0

これを解決したことがあるかどうかはわかりませんが、これを試してください:

If result IsNot Nothing Then
    '*** INSTEAD OF THIS ***
    'theUser = strDomain + "\" + result.ToString()

    '*** USE THIS ***
    theUser = strDomain + "\" + result.Properties("samaccountname").Item(0).ToString
Else
    ...

ToStringオブジェクトでメソッドを呼び出すと、オブジェクトで指定したプロパティではなく、オブジェクトを文字列にresult変換しようとします。オブジェクトで定義した特定のプロパティとオブジェクトを実際に識別し、個々の値を文字列 (または整数、DateTime など) に変換する必要があります。SearchResultSAMAccountNamesearchsearch

于 2013-07-11T22:13:25.927 に答える