我的 BasePage
类中有以下内容,我的所有 ASPX 页面都派生自该类:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ViewStateUserKey = Session.SessionID;
}
我还在 Web.config
中设置了一个 machineKey
。我不认为这个错误是由网络场引起的,因为这也发生在我的开发机器上。
我的主机现已升级到 .NET 3.5 SP1。此次更新后,每次我使用上面的 ViewStateUserKey
设置进行编译时,我都会在每次回发时不断收到“Validation of viewstate MAC failed”错误。
我在这里做错了什么?对于最新的框架更新,是否还需要此设置?
最佳答案
好的 - 我迟到了一年的谈话 - 但这是正确的答案吗?这仅适用于经过身份验证的用户并且使用 ViewStateUserKey
作为用户名比 session ID GUID 更容易猜测的情况。
顺便说一句,如果您想“修复”代码,请使用 session ID,但是您必须设置一个 session 变量以使 session ID 停止每次都更改。前任。
Session["Anything"] = DateTime.Now
ViewStateUserKey = Session.SessionID;
这当然是假设您要使用 session ,否则您需要使用一些其他 key ,例如用户名或保存在 cookie 中的任何其他 guid。
关于c# - 设置 ViewStateUserKey 给我一个 "Validation of viewstate MAC failed"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418233/