FineUI 官方论坛

标题: 验证视图状态MAC失败的重现,请三石大大和朋友们分析一下 [打印本页]

作者: 哈德马斯    时间: 2017-1-15 09:14
标题: 验证视图状态MAC失败的重现,请三石大大和朋友们分析一下
关于验证视图状态MAC失败这个问题,在版本更新4.2.0中显示是已修正这个问题的

[attach]9674[/attach]

但是我这几天在使用时,发现我用的4.2.3版本的代码在虚拟主机中还是出现了这个问题。三石大大叫我用空项目先还原一下,于是我便下载了EmptyProjectNet40_FineUI_v4.2.3.zip在里头添加了testone.aspx,testtwo.aspx,testthree.aspx添加上timer和grid两个控件(需方要搞一个实时数据,于是我临时写了个用timer事件定时刷新表单)打算分别测试直接查询,NHibernate,三层的方式。

首先写的是testone.aspx直接查询,把它改好后发布到虚拟主机上运行一段时间后,他开始报出这个错误。

[attach]9675[/attach]


接下来就是testtwo.aspx使用NHibernate,这次没有限制取得数据条数,所以上传了马上就出现这个问题。


[attach]9676[/attach]

testthree因为虚拟主机居然关停了(测试虚拟主机用的是阿里云的免费虚机,一个月只有10G,没想到才月中就没了流量)就没继续写了。
[attach]9677[/attach]

但根据testone,testtwo还是可以看出这个问题确实是存在的。而阿里云虚拟主机的machineKey是动态的,没法生成放到web.config里。所以把这个问题发上来大家看一下,帮忙分析一下。看看有没有好的解决方法。

问题重现的代码是基于4.2.3的空项目
1.数据库为mysql的,脚本也放在压缩包里了。
2.测试代码为testone.aspx,testtwo.aspx,测试代码把基本上只保留了timer和grid以排除别的干扰。
3.用到的类我都写到App_Code下了。
4.问题只在虚拟主机上出现过,本地和局域网服务器没有报过此错误。
[attach]9679[/attach]



作者: sanshi    时间: 2017-1-15 10:05
我上班时会分析一下。

不过v4.2中解决的问题时FineUI内部实现导致的这个错误:
http://fineui.com/bbs/forum.php?mod=viewthread&tid=7050

理解一点:这个错误可能有很多原因导致,上面的版本只是修改FineUI在快速多次AJAX回发时,顺序问题导致的错误。

如果是machineKey配置导致的问题,依然会存在。



作者: 哈德马斯    时间: 2017-1-15 10:12
sanshi 发表于 2017-1-15 10:05
我上班时会分析一下。

不过v4.2中解决的问题时FineUI内部实现导致的这个错误:

这个能理解,麻烦三石了。
作者: sanshi    时间: 2017-1-15 19:15
你的代码没有问题。所以你只需要在Web.config中设置 machineKey 属性即可。
http://fineui.com/bbs/forum.php?mod=viewthread&tid=655   见第 11 条。





至于你说的:
而阿里云虚拟主机的machineKey是动态的,没法生成放到web.config里。
我能理解你指的无法操作IIS管理器来生成machineKey,按照这篇文章:

https://blogs.msdn.microsoft.com ... enerate-machinekey/


其实我的理解是只要有一个有效的key就行,不一定就是当前服务器生成的,你完全可以在本机生成一个key使用。
评论中也有用户问到:
[attach]9680[/attach]

你试一下。

作者: 哈德马斯    时间: 2017-1-16 08:32
sanshi 发表于 2017-1-15 19:15
你的代码没有问题。所以你只需要在Web.config中设置 machineKey 属性即可。
http://fineui.com/bbs/forum.p ...

好的,我先试一下。谢谢你了!




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4