У меня есть веб-сайт asp.net mvc в интрасети.Доступ к сайту определяется группами в активном каталоге.Есть 4 разных группы, каждая из которых имеет разный доступ к сайту.У меня периодически возникали проблемы с работой сайта медленно.Сайт будет работать нормально в течение нескольких дней, а затем внезапно замедлится.У меня есть и тестовый сайт и производственный сайт.Когда происходит замедление, оба сайта затрагиваются одинаково.У меня также есть сайт, на котором тестовый сайт не имеет доступа к активному каталогу, и он работает без проблем, пока эти два сайта сканируют.У меня возникают проблемы с сайтами, работающими под учетной записью пользователя, поскольку приложение должно обращаться к другому общему ресурсу в интрасети, чтобы распечатать и объединить файлы PDF.Сайты работают в одном пуле приложений.Когда возникает проблема, все страницы одинаково медленны, даже страницы без активности базы данных.Когда возникает проблема, я сбрасываю IIS, перезагружаю веб-сайты и перезагружаю потоки.Единственное, что действительно решает проблему, это перезапуск сервера.Иногда требуется дополнительный перезапуск, чтобы вернуть сайт в нормальное состояние.Вот несколько вещей, которые я попробовал.Кажется, проблема возникает реже, но все же возникает.1. Сократите количество раз, когда я запрашиваю активный каталог.2. Сбросьте IIS при возникновении проблемы.Это не помогло.3. Перерабатывайте пулы приложений.4. Перезапустите службу sql server. 5. Убедитесь, что при обращении к серверам используются полные имена.Это, кажется, уменьшило некоторые проблемы.Не уверен, хотя.Я использую IIS 7 на сервере Windows 2008, 64-разрядный.
user = ConfigurationManager.AppSettings["TravelCardUser.AD_GroupName"];
approver = ConfigurationManager.AppSettings["TravelCardApprover.AD_GroupName"];
maintenance = ConfigurationManager.AppSettings["TravelCardMaintenance.AD_GroupName"];
admin = ConfigurationManager.AppSettings["TravelCardAdmin.AD_GroupName"];
testuser = ConfigurationManager.AppSettings["TestUser"];
List<string> adgroups = new List<string>();
adgroups.Add(admin);
adgroups.Add(approver);
adgroups.Add(maintenance);
adgroups.Add(user);
this.groups = adgroups;
List<string> groupmembership = new List<string>();
foreach (var group in groups)
{
if (!String.IsNullOrEmpty(testuser))
{
this.username = testuser;
}
else
{
this.username = currentloggedinuser;
}
using (var ctx = new PrincipalContext(ContextType.Domain))
using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, group))
using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, username))
{
if (groupPrincipal != null)
{
try
{
if (userPrincipal.IsMemberOf(groupPrincipal))
{
groupmembership.Add(group);
}
}
catch (Exception ex)
{
string theexception = ex.ToString();
}
}
}
}
Вот моя строка подключения ldap.
<add name="ADConnectionString_UserRole" connectionString="LDAP://locationX/cn=TravelCardUser,ou=LocationXgroupsGroups,dc=acme,dc=us,dc=com" />