Запрос не выполнен: параметр контекста «$ HIDDEN1 .__ EVENTVALIDATION» не найден в тестовом контексте - PullRequest
1 голос
/ 30 сентября 2011

Я ищу решение этой проблемы:

Во время выполнения моего автоматического веб-теста я получил запрос, и вот ответ, который я нашел: Запрос не выполнен: параметр контекста '$ HIDDEN1 .__ EVENTVALIDATION' не найден в тестовом контексте Я выяснил, из какого запроса предполагается, что скрытое поле должно быть извлечено из (в предыдущем запросе), где (Hidden1) я нашел его в правиле извлечения запроса before, а значение правила извлечения для имени параметра контекста равно 1.

Примечание. Я использую параметры статики для этого времени, а состояние HTTP равно 200.

После поиска в Интернете я нашел: http://blogs.msdn.com/b/slumley/archive/2007/04/10/how-to-debug-a-web-test.aspx, где я не смог найти в нем свое решение.

Этот вопрос кажется сложным, потому что я держал его 2 дня, не имея ответа! Если кто-то хочет узнать больше информации, я онлайн 24/24 :) Большое спасибо ...

Ответы [ 4 ]

3 голосов
/ 16 февраля 2012

У меня была проблема, аналогичная той, с которой вы столкнулись (я вижу, что этот вопрос очень старый, но я подумал, что выложу решение, так как это первый результат в Google для этой проблемы).

Проблема в том, что тег __EventValidation - это одна из последних вещей, отображаемых браузером, и что веб-тесты VisualStudio 2008 обрезают объект ответа, когда он превышает определенную длину (я думаю, ограничение составляет 1,5 МБ).

У вас есть три варианта:

  1. Спросите себя, почему размер вашей страницы превышает 1,5 МБ и это необходимо, особенно если это общедоступный веб-сайт?
  2. Установите переменную ResponseBodyCaptureLimit в веб-тесте на огромное значение, единицы измерения в байтах, поэтому что-то вроде 9 000 000 (9 МБ) будет достаточно большим, чтобы получить любой объект ответа. Просто имейте в виду, что это повлияет на использование памяти вашим веб-тестом, и если вы используете это для любого тестирования нагрузки / производительности, это будет означать, что вашим агентам потребуется больше памяти.
  3. Переопределите метод OnPreRender, чтобы переместить тег __EventValidation из нижней части страницы в верхнюю часть страницы.

Надеюсь, это поможет всем, кто сталкивается с подобными проблемами.

~ Dan

1 голос
/ 04 октября 2012

Я сталкиваюсь с подобными проблемами и все еще работаю над ними. В то же время, эта ссылка также может помочь:

http://blogs.msdn.com/b/slumley/archive/2007/04/10/how-to-debug-a-web-test.aspx

0 голосов
/ 10 октября 2013

В случае, если кто-то столкнется с этой проблемой и решит переопределить метод Render, вот пример кода.

        var stringWriter = new System.IO.StringWriter();
        var htmlWriter = new HtmlTextWriter(stringWriter);
        base.Render(htmlWriter);

        var html = stringWriter.ToString();

        const string validationELement = "<input type=\"hidden\" name=\"__EVENTVALIDATION\"";
        const string hiddenDivName = "<div class=\"aspNetHidden\">";

        // Find event validation element.
        var startIndex = html.IndexOf(validationELement);
        if (startIndex >= 0)
        {
            var endIndex = html.IndexOf("/>", startIndex) + 2;

            // Cut event validation element.
            var input = html.Substring(startIndex, endIndex - startIndex);
            html = html.Remove(startIndex, endIndex - startIndex);

            // Paste element into hidden div.
            var hiddenDivStartIndex = html.IndexOf(hiddenDivName);
            html = html.Insert(hiddenDivStartIndex + hiddenDivName.Length, input);
        }

        writer.Write(html);
0 голосов
/ 11 октября 2011

Решение состоит в том, чтобы изменить весь атрибут EnableEventValidation на true (значение по умолчанию).

Но лучшее решение в моем openion - это использовать VSTS visualstudio 2010, это лучше, чем в 2008 году, между ними произошла действительно большая эволюция.

...