Я получаю сообщение об ошибке на веб-сайте, на котором я использую проверку подлинности Windows.
Странные вещи:
- Выполняется только в том случае, если пользователь еще не сохранен в базе данных (новый неизвестный пользователь)
- Появляется только в живой системе, все в порядке в локальной среде разработки.
Это то, что я получаю в журнале регистрации:
Источник: System.DirectoryServices
Сообщение: сервер не работает.
Трассировка:
в System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
в System.DirectoryServices.DirectoryEntry.Bind()
в System.DirectoryServices.DirectoryEntry.get_AdsObject()
в System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
в System.DirectoryServices.DirectorySearcher.FindOne()
в Smarthouse.Labs.DataAccess.UserListManager.SaveUser(String windowsUserName)
Вот как я реализую DirectorySearch:
private void SaveUser(string windowsUserName)
{
string[] domainAndUser = windowsUserName.Split('\\');
string domain = domainAndUser[0];
string username = domainAndUser[1];
DirectoryEntry entry = new DirectoryEntry("LDAP://" + domain);
DirectorySearcher search = new DirectorySearcher(entry);
try
{
// Bind to the native AdsObject to force authentication.
search.Filter = "(SAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
search.PropertiesToLoad.Add("sn");
search.PropertiesToLoad.Add("givenName");
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
if (result == null)
{
throw new Exception("No results found in Windows authentication.");
}
User userToSave = new User();
userToSave.FirstName = (String) result.Properties["givenName"][0];
userToSave.LastName = (String) result.Properties["sn"][0];
userToSave.Email = (String) result.Properties["mail"][0];
userToSave.Username = windowsUserName;
userToSave.Guid = Guid.NewGuid();
SaveUser(userToSave);
}
catch (Exception ex)
{
throw new Exception("Error authenticating user. " + ex.Message, ex);
}
finally
{
//Dispose service and search to prevent leek in memory
entry.Dispose();
search.Dispose();
}
}
Если требуется больше примеров кода, просто скажите мне.