У нас есть веб-приложение asp.net 2.0, работающее на IIS7. Он использует веб-сады и государственный сервер asp.net.
На странице много пользовательских элементов управления. В один из пользовательских элементов управления мы добавили регистрацию события button_click, которое записывает строку в журнал при каждом запуске этого метода. Когда мы нажимаем кнопку, она только периодически отображает запись в журнале, указывая на то, что событие не всегда срабатывает при нажатии кнопки. Мы добавили ведение журнала, потому что подозревали, что метод нажатия кнопки не всегда выполняется, когда мы нажимаем кнопку. Доказательства, которые мы видим, похоже, подтверждают наши подозрения.
Когда мы удаляем веб-сад и помещаем сайт обратно в единый пул приложений, приложение возвращается в нормальное состояние - событие кнопки срабатывает каждый раз. Когда мы запускаем приложение на локальных машинах разработчика, оно также работает нормально.
Кто-нибудь еще видел подобное поведение? Есть ли какие-либо рекомендации относительно следующих шагов, которые мы могли бы предпринять, чтобы сузить проблему?
РЕДАКТИРОВАТЬ: вот источник события по запросу:
protected void btnSearch_Click(object sender, EventArgs e)
{
Log.Error("Searching...");
SearchArgs args = CtrlToSearchArgs();
SessionManager.SearchQueryString = Request.QueryString;
string url = NavigationManager.BuildSearchUrl(args, null, "*** page url removed here ***");
if (args.PageSize.HasValue)
{
SessionManager.SetInSession(SessionManager.Key.SEARCH_PAGESIZE, args.PageSize.Value.ToString());
}
else
{
SessionManager.SetInSession(SessionManager.Key.SEARCH_PAGESIZE, "10");
}
SessionManager.SearchPanelData = url;
//Set the new args into the session
SessionManager.SearchControlArgs = args;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Redirect(url);
}
РЕДАКТИРОВАТЬ №2: Уточнение - эта настройка не использует несколько серверов и не находится под балансировщиком нагрузки. Мы используем несколько пулов приложений на одном сервере.