#asp.net-core-mvc #token #stress-testing
#asp.net-core-mvc #токен #стресс-тестирование
Вопрос:
Я пытаюсь провести стресс-тестирование своего приложения с помощью Loadster, но каждый отдельный метод Post выдает предупреждение / ошибку __RequestVerificationToken пусто или не определено, поскольку в методе Get у него есть предупреждение о том, что правило захвата не найдено совпадений для переменной __RequestVerificationToken.
Это способ захвата по умолчанию в методе Get
Я также попробовал эти два способа захвата, чтобы захватить
<input name="__RequestVerificationToken" type="hidden" value="
и
<input name="__RequestVerificationToken" value="
как вы можете видеть здесь
но все еще с теми же предупреждениями.
кстати, у меня есть этот ключ в HTML-файле.
Ответ №1:
После записи скрипта Loadster автоматически добавляет правила захвата для некоторых сгенерированных сервером токенов, в том числе __RequestVerificationToken
, когда он видит, что они передаются от клиента к серверу в последующем запросе. Оно делает это путем обратного отслеживания графика записанных запросов / ответов, пока не найдет, откуда они возникли.
Когда регистратор Loadster находит совпадение для одного из этих токенов, он создает средство захвата на исходном шаге (где значение было впервые замечено в ответе) и параметризованную переменную на последующих шагах, где значение возвращается на сервер.
Важно иметь в виду, что правило захвата основано исключительно на информации, доступной во время записи. Если при воспроизведении что-то отличается, программа захвата может не найти значение, и вы получите эту ошибку.
Наиболее вероятным объяснением является то, что на более раннем шаге вашего скрипта не удалось создать ожидаемое состояние, и теперь сервер фактически не возвращает страницу с __RequestVerificationToken
. Например, более ранний вход в систему в вашем скрипте мог завершиться неудачно, и теперь, когда вы запрашиваете форму, вы получаете какую-то страницу с ошибкой вместо ожидаемой формы.
Вы можете подтвердить это в Loadster, используя вкладку запросов внизу редактора сценариев. После воспроизведения скрипта в этом разделе появляется дерево всех запросов и ответов, и вы можете перейти к детализации, чтобы увидеть точный ответ, возвращенный вашим сервером. Скорее всего, вы не увидите a __RequestVerificationToken
в этом ответе (вот почему не удалось захватить), но вы, вероятно, увидите что-то еще, что объясняет это. Вам также может потребоваться вернуться в дереве к более раннему запросу / ответу, чтобы увидеть, где он сошел с рельсов.
Ответ №2:
Для меня место, в котором Loadster прикрепил «Захват» из записи, было неправильным. После записи оно прикрепило правило «Захвата» к запросу POST, который был получен в результате отправки формы. Токен, который должен быть захвачен, был фактически сгенерирован предыдущим запросом GET.
Чтобы исправить это, я просто переместил (перепечатал) Capture csrfmiddlewaretoken from HTML input csrfmiddlewaretoken
из запроса POST в предыдущий GET, и это сработало.
На самом деле это не относится к OP, но результаты поиска для этой ошибки невелики, поэтому это показалось подходящим местом для этого.