2012-03-28 11 views
0

Wenn einer meiner Visual Studio Web-Performance-Tests laufen, ich intermittierende Ausnahmen bemerkt, wenn Ansichtszustand zu entschlüsseln versuchen:Viewstate Korruption mit VS2010 Webleistungstests

Nachricht: Ungültige Länge für einen Base-64-char-Array.

Call Stack: bei System.Convert.FromBase64String (String s) bei System.Web.UI.ObjectStateFormatter.Deserialize (String input) bei System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter. deserialisieren (String serializedState) bei System.Web.UI.Util.DeserializeWithAssert (IStateFormatter Formatierer, String serializedState) bei System.Web.UI.HiddenFieldPageStatePersister.Load()

Dies geschieht nur auf der einen Test an einem einzigen Ort. Bei einigen Nachforschungen ist mir aufgefallen, dass sich der vom Client gesendete Viewstate und der vom Server empfangene Viewstatus nur dadurch unterschieden, dass alle Pluszeichen (+) zu Leerzeichen wurden ().

Was verursacht das?

Antwort

2

ASP.NET erwartet, dass das ausgeblendete Formularfeld _VIEWSTATE URL-codiert ist, bevor es den Server erreicht. Wenn ASP.NET eine Anforderung empfängt, dekodiert es den Parameter _VIEWSTATE, von dem bekannt ist, dass er Pluszeichen in Leerzeichen umwandelt.

Einstellen der URL Encode Eigenschaft wahr auf dem _VIEWSTATE versteckte Formularfeld in der webtest verursacht der Fehler weg zu gehen.