【问题标题】:Viewstate corruption with VS2010 Web Performance TestsVS2010 Web 性能测试导致 Viewstate 损坏
【发布时间】:2012-04-12 03:23:37
【问题描述】:

在运行我的一项 Visual Studio Web 性能测试时,我注意到尝试解码视图状态时出现间歇性异常:

消息: Base-64 字符数组的长度无效。

调用堆栈: 在 System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 在 System.Web.UI.ObjectStateFormatter.System.Web 的 System.Convert.FromBase64String(String s)。 UI.IStateFormatter.Deserialize(String serializedState) at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) at System.Web.UI.HiddenFieldPageStatePersister.Load()

这只发生在一个地点的一次测试中。做了一些研究,我注意到客户端发送的视图状态和服务器接收的视图状态的不同之处仅在于所有加号(+)字符都变成了空格()。

这是什么原因造成的?

【问题讨论】:

    标签: visual-studio-2010 viewstate webtest


    【解决方案1】:

    ASP.NET 期望 _VIEWSTATE 隐藏表单字段在到达服务器之前进行 URL 编码。当 ASP.NET 接收到请求时,它会对 _VIEWSTATE 参数进行 URL 解码,众所周知,该参数会将加号转换为空格。

    在 webtest 中将 _VIEWSTATE 隐藏表单字段的 URL Encode 属性设置为 true 会导致该错误消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 2015-01-20
      相关资源
      最近更新 更多