Повреждение состояния сервера с помощью веб-тестов производительности VS2010 - PullRequest
0 голосов
/ 28 марта 2012

При выполнении одного из моих тестов веб-производительности Visual Studio при попытке декодирования viewstate я заметил периодически возникающие исключения:

Сообщение: Недопустимая длина для массива символов Base-64.

Стек вызовов: в System.Convert.FromBase64String (String s) в System.Web.UI.ObjectStateFormatter.Deserialize (String inputString) в System.Web.UI.ObjectStateFormatter.System.Web.UI .IStateFormatter.Deserialize (String serializedState) в System.Web.UI.Util.DeserializeWithAssert (IStateFormatter formatter, String serializedState) в System.Web.UI.HiddenFieldPageStatePersister.Load ()

Это происходит только на одном тесте в одном месте. Проведя некоторое исследование, я заметил, что состояние просмотра, отправленное клиентом, и состояние просмотра, полученное сервером, отличались только тем, что все символы плюс (+) стали пробелами ().

Что вызывает это?

1 Ответ

2 голосов
/ 28 марта 2012

ASP.NET ожидает, что скрытое поле формы _VIEWSTATE кодируется URL-адресом до того, как оно достигает сервера.Когда ASP.NET получает запрос, он URL-декодирует параметр _VIEWSTATE, который, как известно, превращает плюсы в пробелы.

Установка для свойства Кодирование URL значения true в _VIEWSTATE скрытом поле формы в веб-тесте привело к исчезновению ошибки.

...