我有一个Web应用程序,它使用Web服务。主页面运行搜索 - 将参数传递给特定的Web服务方法,然后将结果绑定到gridview。非常大的视图状态打破网络应用程序
我已经在网格上实现了排序和分页。通过将网格绑定的数据表放入视图状态,然后根据需要对其进行读取/排序/过滤,然后重新绑定到网格。
随着从Web服务返回的数据量急剧增加,当我尝试进行页面/排序等时,我收到以下错误。
连接被重置
,而该页面被加载到服务器连接被重置。
我已经搜索了一下,看起来这是一个非常大的视图状态。 但可以肯定的唯一的其他选择是
- 限制结果
- 棒会话,而不是视图状态
- 别的东西,我不知道的数据表
以前我也有在会话中的数据表,因为这些数据需要在页面之间持续存在 - (不会发布,所以viewstate不是一个选项)。随着数据量的增加以及持久化的必要性被删除,我使用viewstate来代替。由于会话需要保存的数据量和使用该应用的用户数量,认为这是比会话更好的选择。
看来可能不是。
我认为,当视图状态变得很大时,那个.net会将它分成多个隐藏的视图状态字段,但看起来我只能看到一个巨大的视图状态,在源代码中查看时遇到问题。
任何人都可以启发我如何避免我得到的错误?如果确实与视图状态中的数据量有关?
嗨,感谢您的回复 当然,为了做到这一点,WS将不得不接受排序/页面参数..基本上处理在WS端的分页/排序,并且一次请求一个分页的东西。 但是为了做到这一点,您必须像对每个登录的用户说一样进行独特的主搜索(我们确实有一个会话标识符与每个WS请求一起传递),并按照您的方式进行排序和分页。这是永远不会悲伤发生的。 WS几乎成了一块石头。所以必须与我做什么...继续在下一个评论 – nat 2010-08-26 16:14:14
继续.. 客户端需要所有的数据回来,以便他们可以找到他们想要的懒惰 - 即不做一个非常有针对性的搜索..并筛选网格,以找到他们想要的东西.. 有一个限制参数传递给最初的大型搜索,但设置太低可能使它无法找到他们正在寻找的记录..因为它可能不会返回在从WS 记录集任何其他的想法? – nat 2010-08-26 16:14:50
再次感谢, 您的观点是现货,我已转回到会议,一切都很好。 只是以前被视为状态使用会话pooed .. 当然,我认为viewstate是好的,好像他们离开他们的搜索页面坐在那里他们可以回来在2小时,仍然过滤/排序它(如果视图状态不是太大c) 会话(如果我不想让服务器停下来)将会在很短的2小时内掉线。 再次感谢 nat – nat 2010-08-26 16:32:39