0

Visual Studio の Web パフォーマンス テストの 1 つを実行しているときに、viewstate をデコードしようとすると断続的に例外が発生することに気付きました。

メッセージ: Base-64 文字配列の長さが無効です。

コール スタック: System.Convert.FromBase64String(String s) で System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) で System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) でSystem.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) で System.Web.UI.HiddenFieldPageStatePersister.Load()

これは、1 つの場所での 1 つのテストでのみ発生します。+いくつかの調査を行うと、クライアントから送信されたビューステートとサーバーから受信したビューステートは、すべてのプラス ( ) 文字がスペース ( ) になっているという点だけが異なることに気付きました

これは何が原因ですか?

4

1 に答える 1

2

ASP.NET は、_VIEWSTATE非表示のフォーム フィールドがサーバーに到達する前に URL エンコードされていることを想定しています。ASP.NET が要求を受け取ると、_VIEWSTATEパラメーターを URL デコードします。これにより、プラス記号がスペースに変換されることが知られています。

Web テストの隠しフォーム フィールドでURL エンコードプロパティをtrueに設定する_VIEWSTATEと、バグがなくなりました。

于 2012-03-28T14:04:14.190 に答える