ASP.NET中maxPageStateFieldLength的最佳值是什么

ASP.NET中maxPageStateFieldLength的最佳值是什么,asp.net,viewstate,Asp.net,Viewstate,在viewstate跨度为10-15KB的页面中,什么是最佳值 在web.config中,以降低导致viewstate验证错误的潜在截断风险?maxPageStateFieldLength不限制视图状态的大小,因此不会截断 它所做的只是控制将有多少视图状态放置在一个隐藏字段中。如果视图状态大于maxPageStateFieldLength值,则视图状态将简单地拆分为几个隐藏字段 默认值是-1,这意味着视图状态被放在一个隐藏字段中,这通常是最理想的。我目前遇到了一个问题,只有Firefox用户才

在viewstate跨度为10-15KB的页面中,什么是最佳值


在web.config中,以降低导致viewstate验证错误的潜在截断风险?

maxPageStateFieldLength不限制视图状态的大小,因此不会截断

它所做的只是控制将有多少视图状态放置在一个隐藏字段中。如果视图状态大于
maxPageStateFieldLength
值,则视图状态将简单地拆分为几个隐藏字段


默认值是
-1
,这意味着视图状态被放在一个隐藏字段中,这通常是最理想的。

我目前遇到了一个问题,只有Firefox用户才会出现“由于无效视图状态导致的HttpException”错误。我还看到“System.Web.HttpException:与远程主机通信时出错。错误代码为0x80070001”异常与viewstate异常配对

我相信firefox可能在(可能的)隐藏表单字段上有一个最大大小-我需要验证这一点。我现在希望使用maxPageStateFieldLength将viewstate分块,以便(在短期内)解决这个问题。较长期的解决方案是重构aspx页面,对网格进行分页查询(而不是一次拉下所有行,这不是一件好事)


嗯,你应该输入一个相当大但不是无限的最大值。我认为1MB是一个开始

您是否优化了ViewState的使用?也许你可以减少大小,在不需要的地方禁用它,并且你不需要使用MaxPageStateFieldLength,除非完全重写viewstate以包含压缩,是的。是的,这就是为什么我要求一个最佳值,我理解它的作用。我看到的数字低至40100个,其他1000个实例,我没有看到任何数字的理由,因为它似乎只是任意选择,甚至不是2的幂。@Chris:我看到使用默认值以外的任何其他值的唯一原因是,如果出于某种原因需要限制字段值的大小。如果你有这样的需求,最理想的值就是你可以使用的最高值。如果我知道这个数字是多少,我就不会发布这个问题。此功能在2.0中添加到ASP.NET的原因是,antiviruses/routers/proxies/etc可能会截断单个较大的隐藏字段,从而正确地导致pagestate无效。因为这是一个客户的问题,不是特别可重复的,这就是为什么我要寻求某种类型的共识,到底什么是这个问题的最佳值,而不是默认值-1。@chris,这正是我非常想回答的问题。我理解你对没有这样的答案感到沮丧。呼叫专家…我的解决方案是离开webforms转到MVC2。我看到视图状态的行为仅在10-15KB范围内,这就是为什么我假设分块值必须很小,可能是512bytes或其他什么,但即使尝试这么低的值,我也从未看到这些错误消失。这让我放弃了webforms,将所有新的开发转移到MVC。谢谢你的帖子Chris。纠正这一点并不能解决问题。我看过一些关于代理服务器截断大型隐藏字段的帖子。我也正在走向消除viewstate。这是一件令人头痛的事。不幸的是,大量遗留代码和向MVC迁移是一场艰苦的战斗。哦,好吧,你可以做梦。祝你好运,取消viewstate。我认为如果你使用几乎任何类型的控件都是不可能的,我在发行版中尝试了这一途径。NET4据说使之成为可能,但从未取得任何进展。为了转移到MVC,我们刚刚经历了一个交错的过渡,因为我们彻底检修了任何现有的特性,它从旧项目中被删除并转移了。