Я использую очень простой запрос Ldap на моем сайте asp.net mvc 2.0:
String ldapPath = ConfigReader.LdapPath;
String emailAddress = null;
try
{
DirectorySearcher search = new DirectorySearcher(ConfigReader.LdapPath);
search.Filter = String.Format("(&(objectClass=user)(objectCategory=person)(objectSid={0})) ", securityIdentifierValue);
// add the mail property to the list of props to retrieve
search.PropertiesToLoad.Add("mail");
var result = search.FindOne();
if (result == null)
{
throw new Exception("Ldap Query with filter:" + search.Filter.ToString() + " returned a null value (no match found)");
}
else
{
emailAddress = result.Properties["mail"][0].ToString();
}
}
catch (ArgumentOutOfRangeException aoorEx)
{
throw new Exception( "The query could not find an email for this user.");
}
catch (Exception ex)
{
//_log.Error(string.Format("======!!!!!! ERROR ERROR ERROR !!!!! in LdapLookupUtil.cs getEmailFromLdap Exception: {0}", ex));
throw ex;
}
return emailAddress;
Отлично работает на моей локальной машине. Он отлично работает, когда я запускаю его в VS2010 на сервере. При развертывании всегда возвращается нулевой результат.
Вот мой web.config:
Параметр конфигурации Asp.Net в Visual Studio.
Полный список настроек и комментариев можно найти в
machine.config.comments обычно находится в
\ Windows \ Microsoft.Net \ Framework \ v2.x \ Config
->
раздел позволяет конфигурировать
режима аутентификации безопасности, используемого
ASP.NET для идентификации входящего пользователя.
->
<!--
->
раздел позволяет конфигурировать
что делать, если / когда происходит необработанная ошибка
во время исполнения запроса. В частности,
это позволяет разработчикам настраивать страницы ошибок html
отображаться вместо трассировки стека ошибок.
->
Я запускаю его в пуле приложений по умолчанию.
Кто-нибудь видит проблему? Это сводит меня с ума!