2012-03-28 2 views
0

내 비주얼 스튜디오 웹 성능 테스트 중 하나를 실행, 나는 간헐적으로 예외를 발견 테스트 :viewstate가 손상 viewstate가를 디코딩 할 때

메시지 : 기본-64 char 배열에 대한 길이가 잘못되었습니다.

호출 스택 : System.Convert.FromBase64String에서 (문자열들) System.Web.UI.ObjectStateFormatter.Deserialize에서 (문자열 inputString) System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter에서.

이것은 단지 하나의 지점에 하나 개의 테스트에서 발생 System.Web.UI.HiddenFieldPageStatePersister.Load에서 System.Web.UI.Util.DeserializeWithAssert에서 (문자열 serializedState) (IStateFormatter 포맷터, 문자열 serializedState를)() 직렬화. 몇 가지 연구를 수행 한 결과, 클라이언트가 보낸 viewstate와 서버가받은 viewstate는 모두 더하기 (+) 문자가 공백 ()이되었다는 점에서만 다릅니다.

이 문제의 원인은 무엇입니까?

답변

2

ASP.NET은 _VIEWSTATE 숨겨진 양식 필드가 서버에 도달하기 전에 URL 인코딩 된 것으로 간주합니다. ASP.NET은 요청을 받으면 _VIEWSTATE 매개 변수를 URL로 디코딩합니다.이 매개 변수는 더하기를 공백으로 변환하는 것으로 알려져 있습니다.

WebTest에있는 _VIEWSTATE 숨겨진 양식 필드에 사실URL 인코딩 속성을 설정 버그 멀리 팀인.

관련 문제