Моя компания недавно перешла от выделенного T-1 к широкополосному бизнес-соединению Comcast.Сразу после этого началась эта проблема.
Наши машины для разработки являются локальными, но наш сервер Active Directory (используемый для тестирования и подготовки продукта перед развертыванием) является экземпляром общедоступного облака, расположенным в Rackspace.Машины dev не подключены к домену.
Мы используем ActiveDirectoryMembershipProvider и аутентификацию на основе форм, а также запросы LDAP внутри самого приложения после завершения аутентификации.
Мы былиИспользование этой конфигурации в течение нескольких месяцев - без проблем.
После перехода на Comcast - кажется, что все работает правильно, кроме этого.Когда мы пытаемся запустить приложение локально, мы получаем указанную выше ошибку.
Ошибка сервера в приложении '/Web.NEPA'.
--------------------------------------------------------------------------------
Ошибка конфигурации Описание: ошибкапроизошла во время обработки файла конфигурации, необходимого для обслуживания этого запроса.Пожалуйста, просмотрите подробности конкретной ошибки ниже и измените файл конфигурации соответствующим образом.
Сообщение об ошибке синтаксического анализатора: не удалось связаться с указанным доменом или сервером.
Ошибка источника:
Строка 4: Строка 5: Строка 7: connectionStringName = "LdapService" Строка8: attributeMapUsername = "SAMAccountName"
Исходный файл: C: \ dev \ EMSolution \ branch \ 3.4.0.0 \ Web.NEPA \ App_Config \ Testing \ 3.4.0.0 \ NEPAARNG \ System.Web.Membership.configСтрока: 6
--------------------------------------------------------------------------------
Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.4952;ASP.NET версия: 2.0.50727.4955
Я убедился, что это не проблема с брандмауэром на стороне Rackspace (полностью отключив его и попытавшись установить соединение).Я также создал тестовую программу для запуска запроса LDAP к нашему экземпляру AD - который отлично работает.
--- вот некоторые из упомянутых элементов:
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
<providers>
<add name="AspNetActiveDirectoryMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LdapService"
attributeMapUsername="SAMAccountName"
connectionUsername="DEV1\emsutil"
connectionPassword="*****"
connectionProtection="None"
requiresQuestionAndAnswer="false"
minRequiredPasswordLength="4"
minRequiredNonalphanumericCharacters="0"
enableSearchMethods="true"/>
</providers>
</membership>
<connectionStrings>
<add name="LdapService" connectionString="LDAP://cloud1.dev1/DC=dev1" />
</connectionStrings>
--- Testпрограмма, которая работает правильно:
using System;
using System.DirectoryServices;
namespace ldaptest
{
internal class Program
{
private static void Main(string[] args)
{
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://cloud1.dev1/DC=dev1";
de.Username = "emsutil@dev1";
de.Password = "*****";
DirectorySearcher srch = new DirectorySearcher(de);
srch.Filter = "(objectClass=user)";
using (SearchResultCollection results = srch.FindAll())
{
foreach (SearchResult res in results)
{
Console.WriteLine("\t{0}", res.Path);
}
}
Console.ReadKey();
}
}
}