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

今天在帮朋友解决错误:

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加密自然有他的道理,所以不要轻易禁用它!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值