2012-03-28 55 views
0

当运行我的Visual Studio的Web性能测试之一,我试图解码视图状态时注意到间歇异常:与VS2010 Web性能视图状态腐败测试

消息:为基地-64字符数组长度无效。

调用堆栈:在System.Convert.FromBase64String(String s)将在System.Web.UI.ObjectStateFormatter.Deserialize(字符串inputString)在System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter。 System.Web.UI.HiddenFieldPageStatePersister.Load()上的System.Web.UI.Util.DeserializeWithAssert(IStateFormatter格式程序,字符串serializedState)的Deserialize(String serializedState)

这只发生在一个点上的一次测试中。做一些研究,我发现客户端发送的视图状态和服务器接收到的视图状态不同,只是所有正(+)字符变成空格()。

这是什么造成的?

回答

2

ASP.NET希望_VIEWSTATE隐藏表单字段在到达服务器之前进行了URL编码。当ASP.NET收到一个请求时,它会对参数_VIEWSTATE进行URL解码,这个参数已知可以将加号转换为空格。

上在WebTest的的_VIEWSTATE隐藏的表单字段设置URL编码属性真正导致了这个bug消失。