ASP.NET нагрузочное тестирование с помощью Jmeter- Membership.getUser() возвращает null в HttpHandler

#asp.net #forms #authentication #httphandler #jmeter

#asp.net #формы #аутентификация #httphandler — обработчик #jmeter #httphandler

Вопрос:

Я уже использовал Jmeter для нагрузочного тестирования моего ASP.NET 4 сайта с аутентификацией в формах, и все работало нормально.

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

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

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

Спасибо

Редактировать:

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

Ответ №1:

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

Комментарии:

1. Спасибо за ответ… обработчики http находятся глубоко на сайте, т. Е. Между входом в систему и запросом обработчика http поступает много запросов к серверу. К тому времени, конечно, был бы установлен участник аутентификации? Остальная часть сайта отлично работает при нагрузочном тестировании, просто http-обработчики отключаются

Ответ №2:

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

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