您的位置:首页 > 其它

关于Load Balance出现ViewState异常的解决方案

2010-12-16 14:49 302 查看
今天在帮朋友解决错误:

System.Web.HttpException: Authentication of viewstate failed.

1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

2) Viewstate can only be posted back to the same page.

3) The viewstate for this page might be corrupted. ---> System.Web.HttpException: 无法验证数据

google出来的转过来参考下

[转自百度舞月光]

分析以上异常报告,引发此异常一定是因为1)了,所以有以下解决方案:
1.负载均衡Pool的Persistence Type(进程延续)的值改为Simple,Timeout设为600秒。
2.将每台服务器上的machine.config 中以下配置的machineKey 改为一致的配置
<!-- validation="[SHA1|MD5|3DES]" -->

<machineKey validation="SHA1" validationKey="F3690E7A3143C185A6A8B4D81FD55DD7A69EEAA3B32A6AE813ECEEC" />
3.在特定的页面上disable the keying of viewstate to a particular server
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="MyPage.aspx.cs"

Inherits="MyAssembly.MyPage" enableViewStateMac="False" %>
4.在Web.config里加以下配置来实现每个页面都禁用enableViewStateMac
<system.web>

<pages enableViewStateMac="false" />

</system.web>

建议:
在实际解决的时候,第一个方式需要动系统设置,如果不了解服务器各个方面的安全配置情况建议不采用,而第3和第4个方式,除非你的用户是经过身份验证过的,而且查询的东西不是敏感数据,那么问题不大,否则应该时候第2个方案!因为这样更安全,微软既然设计了ViewState加密自然有他的道理,所以不要轻易禁用它!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐