Служба Windows LdapException: сервер LDAP недоступенC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Служба Windows LdapException: сервер LDAP недоступен

Сообщение Anonymous »

У меня есть служба Windows, которая предоставляет данные через WCF приложению Windows Forms. Служба также заботится об аутентификации пользователей, проверяя пароль пользователя с помощью LDAP на серверах Active Directory компании.

Проблема в том, что она работает неделями (даже месяцами), чем что-то происходит, и аутентификация пользователя LDAP завершается неудачей со следующим исключением, пока я не перезапущу службу:

Код: Выделить всё

System.DirectoryServices.AccountManagement.PrincipalServerDownException: The server could not be contacted.
---> System.DirectoryServices.Protocols.LdapException: The LDAP server is unavailable.
at System.DirectoryServices.Protocols.LdapConnection.Connect()
at System.DirectoryServices.Protocols.LdapConnection.SendRequestHelper(DirectoryRequest request, Int32& messageID)
at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request, TimeSpan requestTimeout)
at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request)
at System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName, ServerProperties& properties)
--- End of inner exception stack trace ---
at System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName, ServerProperties& properties)
at System.DirectoryServices.AccountManagement.PrincipalContext.DoServerVerifyAndPropRetrieval()
at System.DirectoryServices.AccountManagement.PrincipalContext..ctor(ContextType contextType, String name, String container, ContextOptions options, String userName, String password)
at System.DirectoryServices.AccountManagement.PrincipalContext..ctor(ContextType contextType, String name, String userName, String password)
at SMSTModel.Authentication.ActiveDirectory.IsUserAllowed(String username, String password)
Перезапуск службы решает проблему.

Код: Выделить всё

public static bool IsUserAllowed(string username, string password)
{
String localDomain = Domain.GetComputerDomain().Name;
string userDomain = null;
string user = username;
if (user.Contains(@"\"))
{
userDomain = user.Substring(0, user.IndexOf("\\"));
user = user.Substring(user.IndexOf("\\") + 1);
}

userDomain = userDomain != null ? userDomain : localDomain;
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, userDomain, user, password))
{
bool credOk = pc.ValidateCredentials(user, password);
if (!credOk)
return false;
using (UserPrincipal userP = UserPrincipal.FindByIdentity(pc, user))
{
if (userP != null)
{
using (PrincipalContext pc1 = new PrincipalContext(ContextType.Domain, localDomain))
{
using (GroupPrincipal groupPrincipal = new GroupPrincipal(pc1))
{
groupPrincipal.Name = "APP_*";
using (PrincipalSearcher principalSearcher = new PrincipalSearcher(groupPrincipal))
foreach (Principal found in principalSearcher.FindAll())
{
if (found.Name == "APP_Group" && found is GroupPrincipal && userP.IsMemberOf((GroupPrincipal)found))
{
return true;
}
}
}
}
}
}
}

return false;
}
Есть идеи, почему это происходит и как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/573 ... navailable
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • .NET 8 Ldap Authenticate Empty LdapException.ServerErrorMessage в Linux
    Anonymous » » в форуме Linux
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Сервер LDAP недоступен на порту 636
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Сервер LDAP недоступен на порту 636
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • LDAPException(resultCode=8 (требуется строгая аутентификация), DiagnosticMessage='BindSimple: требуется транспортное шиф
    Anonymous » » в форуме JAVA
    0 Ответы
    86 Просмотры
    Последнее сообщение Anonymous
  • LDAPException(resultCode=8 (требуется строгая аутентификация), DiagnosticMessage='BindSimple: требуется транспортное шиф
    Anonymous » » в форуме JAVA
    0 Ответы
    84 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»