一、问题起因

  最近项目中有一页面第一次search后正常,但是再次点击其它任何按钮都会报错,亦即postback后页面有问题,经检查是由于页面有一GridView且数据量极大,记录大概有上千条,这儿解释一下,本页面不允许分页要求所有的记录都要显示已方便使用,另你可能说为啥要用GridView啊?这也不是本文要讨论的问题。

  经查,ASP.NET对postback是有限制的,确切地说是对postback后form上fields的集合大小的限制,默认大概1000,而我们这个页面仅仅Input, Select等就达到上千,所以才会造成页面出错即Operation is not valid due to the current state of the object.

二、问题解决

  知道了原因,解决起来就容易了,如下在web.config中增加如下配置,把大小直接增加到5000

<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>

三、后续说明

  虽然表面上解决了此问题,但是此方案风险极大,微软之所以在2月推出此更新MS11-100 (http://technet.microsoft.com/en-us/security/bulletin/ms11-100.This security update is rated Critical for Microsoft .NET Framework 1.1 Service Pack 1, Microsoft .NET Framework 2.0 Service Pack 2, Microsoft .NET Framework 3.5 Service Pack 1, Microsoft .NET Framework 3.5.1, and Microsoft .NET Framework 4 on all supported editions of Microsoft Windows) 是因为要避免HTTP POST Hash Collision Dos即Hash碰撞的拒绝服务攻击,此漏洞影响盛广,Java, Python, PHP, Ruby等无一幸免,当然ASP.NET也在受害之列.

攻击原理: 该安全弱点利用了各语言的Hash算法的非随机性可以制造出N多的value不一样,但是key一样数据,然后让你的Hash表成为一张单向链表,而导致你的整个网站或是程序的运行性能以级数下降(可以很轻松地让你的CPU升到100%

Hash散列攻击: http://stackoverflow.com/questions/8669946/application-vulnerability-due-to-non-random-hash-functions

    http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003.pdf

PHP攻击版本实现:http://blog.csdn.net/linvo/article/details/7169718 (仅供参考)

解决方法:

  1. Restrict the number of POST parameters (限制请求数 – MS11-100干的就是这个事)
  2. Restrict the size of the POST request (限制请求大小)
  3. Web Application Firewall

  

四、参考链接

  http://forums.asp.net/t/1585040.aspx/1

  http://stackoverflow.com/questions/8832470/operation-is-not-valid-due-to-the-current-state-of-the-object-error-during-pos

GridView Postback后出错Operation is not valid due to the current state of the object.的更多相关文章

  1. 关于 error: Operation is not valid due to the current state of the object。

    今天碰到一个特别的异常. Operation is not valid due to the current state of the object. at System.Web.HttpValueC ...

  2. “Operation is not valid due to the current state of the object.”

    将Repeater单页显示的2000条数据一次性提交的时候出现这个错误: Operation is not valid due to the current state of the object. ...

  3. Error occurred in deployment step 'Add Solution': Operation is not valid due to the current state of the object.

    Sharepoint 部署的时候出现一个错误 Error occurred in deployment step 'Add Solution': Operation is not valid due ...

  4. Operation is not valid due to the current state of the object.

    今天遇到一个asp.net的草郁闷的问题,看下截图 狂晕啊,在google上狂搜了一下,好在已经有大侠也遇到过这个问题了,先看下别人的解决办法吧 Operation is not valid due ...

  5. kali kvm Requested operation is not valid: network 'default' is not active

    安装时候参考的:http://www.ilanni.com/?p=6101 今天安装完kvm,满是幸福的装了个xp,重启后出现了一个错误 Requested operation is not vali ...

  6. Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when t

    Question SSIS包从A服务器搬迁到B服务器,运行报错 Description: Failed to decrypt protected XML node "DTS:Password ...

  7. vs问题解决:an operation is not legal in the current state

    debug时弹出提示框:内容有:an operation is not legal in the current state 解决方案: Go to Tools > Options > D ...

  8. 初学React,setState后获取到的thisstate没变,还是初始state?

    问题:(javascript)初学React,setState后获取到的thisstate没变,还是初始state?描述: getInitialState(){ return {data:[]}; } ...

  9. win7 安装JDK7和JDK8后,卸载JDK8后出错

    这是本人学习Java过程中遇到的一些问题和解决方法,在此记录,方便本人查看,解决他人疑惑. 本人win7 x64旗舰版,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java - ...

随机推荐

  1. HashMap的put方法返回值问题

    API文档中的描述: 先看一个例子 Map<Character, Integer> map = new HashMap<Character, Integer>(); Syste ...

  2. c++11 函数模板的默认模板参数

    c++11 函数模板的默认模板参数 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> ...

  3. 使用LD_Preload的Linux权限升级技巧

      0x00 前言 共享库是程序在启动时加载的库.正确安装共享库后,之后启动的所有程序将自动使用新的共享库. 0x01 共享库名称 每个共享库都有一个名为soname的特殊名称.soname有前缀li ...

  4. Using Immutable in React + React-Redux

    React-Redux Introduction React-Redux is a library for React based on Redux package. And the core ide ...

  5. 解题:POI 2012 Well

    题面 比较明显地能看出二分来,但是检查函数很难写.对于二分出的一个$mid$,我们要让它满足在$m$次操作内令序列中存在一个为零的位置,同时使得任意相邻的两项之差不超过$mid$ 第二项的检查比较好做 ...

  6. joda-time 2.5 包简化java时间操作

    原文:https://www.ibm.com/developerworks/cn/java/j-jodatime.html Joda-Time 简介 既然无法摆脱时间,为何不设法简化时间处理? J P ...

  7. laravel DB listen 回调追踪产生 sql 语句的代码

    \DB::listen(function (QueryExecuted $sql) { \Log::info($sql->sql); \Log::info((new \Exception())- ...

  8. mysql 中的共享锁和排他锁

    共享锁(share lock) 共享锁又称读锁,是读取操作创建的锁.其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁. 如果事务T对数据A加上共享锁 ...

  9. Tomcat权威指南-读书摘要系列1

    1. Tomcat的开幕式 1.1. Tomcat是以Java编写的 1.2. 以catalina命令启动和停止Tomcat .\catalina.bat start // 启动 .\catalina ...

  10. 在MyBatis中,前台传数组批量传id处理数据方式

    <update id = "dishBatchSaleOrDown"> <if test="ids != null"> <if t ...