Q1 - 如果字符“C”被保存到视图状态中,那么就在呈现页面之前,Asp.Net 将“C”(连同其他数据)序列化为 Base64 字符串。如果在回发时,我发出以下代码:
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Text = "ABCDEF";
if (IsPostBack)
{
string viewStateString=Request["__VIEWSTATE"];
byte[] stringBytes = Convert.FromBase64String(viewStateString);
for (int i = 0; i < stringBytes.Length; i++)
{
if(stringBytes[i] == 67)
Label1.Text = ”deserialization successful”;
}
}
}
,然后 FromBase64String() 应该将序列化数据转换回其原始格式。因此,“stringBytes”字段之一应包含十进制值 67(表示 ASCII 字符 C)。但似乎并非如此。任何想法我做错了什么?
Q2 - 由于 String 表示一组 Unicode 字符,我假设在上面的示例中,当“ABCDEF”从视图状态反序列化时,“ABCDEF”字符串中的每个字符都由“stringBytes”数组的两个元素表示?
再见
编辑:
我必须为没有提到我确实在 Page 标记中将 enableViewStateMac 设置为 false 表示歉意,但它仍然不起作用