我的 ASP.NET MVC-5 .net 4.6 中有這個操作方法:-
public ActionResult UsersInfo2()
{
List<DomainContext> results = new List<DomainContext>();
try
{
// create LDAP connection object
DirectoryEntry myLdapConnection = createDirectoryEntry();
string ADServerName = System.Web.Configuration.WebConfigurationManager.AppSettings["ADServerName"];
string ADusername = System.Web.Configuration.WebConfigurationManager.AppSettings["ADUserName"];
string ADpassword = System.Web.Configuration.WebConfigurationManager.AppSettings["ADPassword"];
using (var context = new DirectoryEntry("LDAP://mydomain.com:389/DC=mydomain,DC=com", ADusername, ADpassword))
using (var search = new DirectorySearcher(context))
{
SearchResult r = search.FindOne();
ResultPropertyCollection fields = r.Properties;
foreach (String ldapField in fields.PropertyNames)
string temp;
foreach (Object myCollection in fields[ldapField])
temp = String.Format("{0,-20} : {1}",
ldapField, myCollection.ToString());
}
}
using (var context = new PrincipalContext(ContextType.Domain, "mydomain.com", ADusername, ADpassword))
{
bool isvalid = context.ValidateCredentials("*******", "****************");
}
}
catch (Exception e)
{
Console.WriteLine("Exception caught:\n\n" e.ToString());
}
return View(results);
}
所以經過大約一天的測驗后,我意識到DirectoryEntry我需要按如下方式通過服務器/ldap ("LDAP://mydomain.com:389/DC=mydomain,DC=com", ADusername, ADpassword)),而對于PrincipalContext我們需要按如下方式通過:- (ContextType.Domain, "mydomain.com", ADusername, ADpassword)).. 所以我不能通過 ldapPrincipalContext也不能只通過 servrname里面 DirectoryEntry..是這樣的嗎?還是我做錯了?謝謝
uj5u.com熱心網友回復:
你是對的。
System.DirectoryServices.AccountManagement創建命名空間 (,PrincipalContext等UserPrincipal)是為了簡化事情。但是,它只是在后臺使用System.DirectoryServices命名空間(DirectoryEntry等)。(除了ValidateCredentials,它使用System.DirectoryServices.Protocols.LdapConnection)。
我更喜歡總是使用DirectoryEntry和朋友,因為它讓我對性能有更多的控制。這就是我寫的一篇文章:Active Directory:更好的性能
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/514886.html
上一篇:C#類不再可以為空了嗎?
