2016-11-14 5 views
0

LDAPクエリ内で一致する各インスタンスに対して作成されたリストを作成する必要があるアプリケーションを構築しています。c#LDAPリストにLDAPクエリの詳細を設定する

これは、ユーザーが「Smith」というsn(姓)を検索すると、姓が「Smith」のすべてのユーザーの詳細がリストに表示されます。

このリストを使用して、ユーザーが選択できる選択ボックスの詳細を生成し、その後、これは使用したフォームに保存されます。

解決策の検索フィールドと値がこのアクションに渡されるように(多くは、ワイルドカードの後に​​接尾辞が付けられる可能性があります)、リストが移入されます。このアクションと呼ばれるページでは、LDAP検索で必要とされる詳細を保存することができます。必要なものはファーストネームかcnで保存します。

私のコードは正しかったようですが、私の前提はJSの機能と似ていますが、Visual Studioはコードの一部を間違って強調しています。ここで

は、以下のコードは、問題を解決するかもしれません(私が間違ってのVisual Studioによって強調されている部品の隣にコメントを入れている)

using System.Collections.Generic; 
using System.DirectoryServices; 

namespace solutionName.Apps.Models 
{ 
    public class LDAP 
    { 
     protected void LDAP_Search(string LDAP_Field, string LDAP_Value) 
     { 
      string _ldapserver = "myLDAPServer"; 
      string _port = "123"; 
      string _username = "myUserName"; 
      string _password = "myPassword"; 
      _ldapserver = "LDAP://" + _ldapserver + ":" + _port; 
      DirectoryEntry entry = new DirectoryEntry(_ldapserver, _username, _password); 
      entry.AuthenticationType = AuthenticationTypes.None; 
      DirectorySearcher deSearch = new DirectorySearcher(entry); 
      deSearch.PropertiesToLoad.Add("fullname"); 
      deSearch.PropertiesToLoad.Add("givenName"); 
      deSearch.PropertiesToLoad.Add("sn"); 
      deSearch.PropertiesToLoad.Add("PersonOUC"); 
      deSearch.PropertiesToLoad.Add("mail"); 
      deSearch.PropertiesToLoad.Add("cn"); 
      deSearch.Filter = "(&(" + LDAP_Field + "=" + LDAP_Value + "))"; 
      var LDAPResponses = new List<LDAP_Search_Model> 
      { // this line is highlighted as incorrect 
       foreach (SearchResult sresult in deSearch.FindAll()) 
       { 
        new LDAP_Search_Model 
        { 
         fName = sresult.Properties["givenName"][0].ToString(), 
         sName = sresult.Properties["sn"][0].ToString(), 
         fullName = sresult.Properties["fullname"][0].ToString(), 
         OUC = sresult.Properties["PersonOUC"][0].ToString(), 
         email = sresult.Properties["mail"][0].ToString(), 
         UIN = sresult.Properties["cn"][0].ToString() 
        }; 
       } 
      }; // this line is also highlighted as incorrect 

     } 
    } 

    public class LDAP_Search_Model 
    { 
     public string UIN { get; set; } 
     public string fName { get; set; } 
     public string sName { get; set; } 
     public string fullName { get; set; } 
     public string OUC { get; set; } 
     public string email { get; set; } 
    } 


} 

答えて

1

私のコードです。

var LDAPResponses = new List<LDAP_Search_Model>(); 
foreach (SearchResult sresult in deSearch.FindAll()) 
{ 
    LDAPResponses.Add(new LDAP_Search_Model 
    { 
     //... 
    }); 
};