2010-04-01 2 views
0

У меня есть активный поиск по каталогу функция:Возвращаясь несколько значений из вызова функции

Function GetAdInfo(ByVal ADDN As String, ByVal ADCommonName As String, ByVal ADGivenName As String, ByVal ADStaffNum As String, ByVal ADEmail As String, ByVal ADDescription As String, ByVal ADTelephone As String, ByVal ADOffice As String, ByVal ADEmployeeID As String) As String 
     Dim netBIOSname As String = Me.Request.LogonUserIdentity.Name 
     Dim sAMAccountName As String = netBIOSname.Substring(netBIOSname.LastIndexOf("\"c) + 1) 
     Dim defaultNamingContext As String 
     Using rootDSE As DirectoryServices.DirectoryEntry = New DirectoryServices.DirectoryEntry("LDAP://RootDSE") 
      defaultNamingContext = rootDSE.Properties("defaultNamingContext").Value.ToString() 
     End Using 
     Using searchRoot As DirectoryServices.DirectoryEntry = _ 
          New DirectoryServices.DirectoryEntry("LDAP://" + defaultNamingContext, _ 
           "kingkong", "kingkong", DirectoryServices.AuthenticationTypes.Secure) 
      Using ds As DirectoryServices.DirectorySearcher = New DirectoryServices.DirectorySearcher(searchRoot) 
       ds.Filter = String.Format("(&(objectClass=user)(objectCategory=person)(sAMAccountName={0}))", sAMAccountName) 
       Dim sr As DirectoryServices.SearchResult = ds.FindOne() 

       ADDN = (sr.Properties("displayName")(0).ToString()) 
       ADCommonName = (sr.Properties("cn")(0).ToString()) 
       ADGivenName = (sr.Properties("givenname")(0).ToString()) 
       ADStaffNum = (sr.Properties("sn")(0).ToString()) 
       ADEmail = (sr.Properties("mail")(0).ToString()) 
       ADDescription = (sr.Properties("description")(0).ToString()) 
       ADTelephone = (sr.Properties("telephonenumber")(0).ToString()) 
       ADOffice = (sr.Properties("physicalDeliveryOfficeName")(0).ToString()) 

      End Using 
     End Using 
     Return ADDN 
     Return ADCommonName 
     Return ADGivenName 
     Return ADStaffNum 
     Return ADEmail 
     Return ADDescription 
     Return ADTelephone 
     Return ADOffice 

Функция, кажется, работает, как и когда я ставлю точку останова в конце концов, такие переменные, как Addn действительно имеет правильный значения.

Тогда я вызываю функцию в моей Page_Load так:

GetAdInfo(ADDN, ADCommonName, ADGivenName, ADStaffnum, ADEmail, ADDescription, ADTelephone, ADOffice, ADEmployeeID) 

Тогда я пытаюсь response.write одну из Варс, чтобы проверить, как это:

Response.Write(ADDN) 

Но значение пустой.

Пожалуйста, кто-нибудь скажет мне, что я делаю неправильно. Спасибо

ответ

3

Вы можете вернуть только одно значение из функции - вы можете передать их по ссылке, и они должны вернуться с правильными значениями, но для меня, я думаю, вам лучше создать небольшой класс со свойствами вам нужно вернуть и вернуть экземпляр этого класса из этого метода, заполненный возвращаемыми переменными - это означает, что у вас будет меньше проблем с изменением этого метода, если вам нужно добавить больше возвращаемых значений.

+0

Когда вы говорите, передавая их по ссылке, вы имеете в виду вот так: ADGivenName = (sr.Properties («givenname») (0) .ToString()) и удалить все Return? – Phil

+0

Я имею в виду изменение байла на байре, хотя я бы не рекомендовал это как решение. – Paddy