Sto cercando di raggiungere una query LDAP per raccogliere tutte le proprietà che abbiamo sui nostri utenti senza specificare le proprietà prima mano, vorrei mostrarlo in una tabella in modo da utilizzare il codice sottostante. Funziona se rimetto il commento alla ricerca.PropertiesToLoad.Add ("cn"); linea e mostrerà tutte le altre proprietà che aggiungo nello stesso modo ma non quando eseguo una ricerca completa di tutte le proprietà.Active Directory Visualizza tutte le proprietà in una tabella
DirectoryEntry myLdapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.CacheResults = true;
//search.PropertiesToLoad.Add("cn");
SearchResultCollection allResults = search.FindAll();
DataTable resultsTable = new DataTable("Results");
//add columns for each property in results
foreach (string colName in allResults.PropertiesLoaded)
resultsTable.Columns.Add(colName, colName.GetType());
//loop to add records to DataTable
foreach (SearchResult result in allResults)
{
int tmp = result.Properties.Count;
DataRow row = resultsTable.NewRow();
foreach (string columnName in search.PropertiesToLoad)
{
if (columnName.Equals("lastlogon"))
{
if (result.Properties.Contains(columnName))
row[columnName] = ConvertDate(result.Properties[columnName].ToString());
else
row[columnName] = "";
}
else
{
if (result.Properties.Contains(columnName))
row[columnName] = result.Properties[columnName][0].ToString();
else
row[columnName] = "";
}
}
resultsTable.Rows.Add(row);
}
gridResults.DataSource = resultsTable;
Il problema sembra essere con
foreach (string colName in allResults.PropertiesLoaded)
resultsTable.Columns.Add(colName, colName.GetType());
mi aspettavo questo a ciclo tutte le proprietà quando era stata specificata alcuna PropertiesToLoad ma non è il loro modo per ottenere ciò che voglio.
So che ho bisogno di alcuni tentativi di cattura e altri bit nel codice fino ad ora, è un progetto preliminare.
grazie !!!!!!!!! – Sak