Нагрузочное тестирование ASP.NET с Jmeter-Membership.GetUser() возвращает null в HttpHandler

Раньше я использовал Jmeter для тестирования загрузки моего сайта ASP.NET 4 с проверкой подлинности с помощью форм, и все работало нормально.

С тех пор было добавлено несколько HttpHandlers, что я и пытаюсь загрузить test. Если нагрузочный тест с 1 потоком, все работает нормально. Если я загружаю тест с двумя потоками, я получаю исключение нулевой ссылки при вызове Membership.GetUser(). Я отладил это локально и вижу, что HttpContext.Current.User также имеет значение null, однако вызов Membership.GetUser("userName") возвращает пользователя.

Я знаю, что приложение может работать с более чем двумя пользователями, я только что использовал другое приложение для нагрузочного тестирования (Web Performance Load Tester), и оно не дало ошибок.

Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?

Спасибо

изменить:

Просто чтобы уточнить, я проверяю это после аутентификации


person SneakAttaack    schedule 07.11.2011    source источник


Ответы (2)


Проблема в том, что принципал аутентификации не будет установлен до следующего запроса к серверу. Если вы используете элемент управления Login, вы можете использовать свойство UserName, чтобы идентифицировать ключ user.Main, стоящий за вашей проблемой.

person Shree    schedule 07.11.2011
comment
Спасибо за ответ... обработчики http находятся глубоко на сайте, т. е. существует много запросов к серверу между входом в систему и запросом обработчика http. Конечно, к тому времени принцип аутентификации уже был бы установлен? В остальном сайт работает нормально при нагрузочном тестировании, только обработчики http валятся - person SneakAttaack; 07.11.2011

Моя проблема была связана с тем, что элемент «Предварительный процессор параметров пользователя» в Jmeter не выполнялся должным образом/достаточно скоро. Я заменил его элементом «Конфигурация набора данных CSV» и добавил его непосредственно под группу потоков, и он отлично работает.

Поскольку пользовательские параметры не использовались, поток не регистрировался в веб-приложении, поэтому GetUser() возвращал значение null!

person SneakAttaack    schedule 09.11.2011