2012-03-28 50 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消失。