由于对象的当前状态,选择下拉列表时操作无效

22

我在aspx页面上有radcombo框,但选中任何选项后都会出现“Server Error in '/' Application.”错误。

由于对象的当前状态而导致操作无效。 描述:当前 Web 请求的执行期间发生未处理的异常。请查看堆栈跟踪以获取有关错误和代码中源自何处的更多信息。

异常详细信息:System.InvalidOperationException: 由于对象的当前状态,因此操作无效。

源错误:

在执行当前 Web 请求的过程中生成了一个未处理的异常。可以使用以下异常堆栈跟踪标识异常的起源和位置。

堆栈跟踪:

[InvalidOperationException: 由于对象的当前状态,因此操作无效。]
System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2692302 System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +61
System.Web.HttpRequest.FillInFormCollection() +148

[HttpException (0x80004005): 编码为 URL 的表单数据无效。] System.Web.HttpRequest.FillInFormCollection() +206
System.Web.HttpRequest.get_Form() +68
System.Web.HttpRequest.get_HasForm() +8735447
System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97 System.Web.UI.Page.DeterminePostBackMode() +63 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +133


版本信息:Microsoft .NET Framework 版本:2.0.50727.3634;ASP.NET 版本:2.0.50727.3634`

提示:可能是由于您提交的表单数据过多或格式不正确导致了此错误。

2
如果您能够发布一些代码,那将会很有帮助。但这可能是您的问题所在:如果您的RadComboBox在选择后进行回传,并且您有很多表单字段,则可能会出现此异常。这里有另一个带有更多细节的问题 https://dev59.com/amoy5IYBdhLWcg3wA5aC。 - Fahad
3个回答

56

来自http://codecorner.galanter.net/2012/06/04/solution-for-operation-is-not-valid-due-to-the-current-state-of-the-object-error/的解决方案:

Issue happens because Microsoft Security Update MS11-100 limits number of keys in Forms collection during HTTP POST request. To alleviate this problem you need to increase that number.

This can be done in your application Web.Config in the <appSettings> section (create the section directly under <configuration> if it doesn’t exist). Add 2 lines similar to the lines below to the section:

<add key="aspnet:MaxHttpCollectionKeys" value="2000" />
<add key="aspnet:MaxJsonDeserializerMembers" value="2000" />

The above example set the limit to 2000 keys. This will lift the limitation and the error should go away.


非常感谢,运行得非常好。 - noman zafar

11

如果你调用了

 .SingleOrDefault() 

在一个包含两个或更多元素的IEnumerable上。


2
你会得到“InvalidOperationException: 序列包含多个元素”的错误。 - ps.
11
琳,这个异常在Mono的SingleOrDefault()中发生。虽然它可能不是与这个问题完全相关的,但确实与之有关。对于那些可以搜索到这个异常信息(并且使用Mono)并找到我的解决方案的网络冲浪者来说,这非常有用,而不是浪费时间。事实上,这似乎是几个用户的情况,但是保姆组织已经来到这里,在没有考虑实际情况的情况下进行了投票。这个网站是为了帮助开发人员,而不是社交网络,以削弱相关答案。这对这个网站是有害的,它也不能帮助合法的开发人员。 - Herman Schoenfeld
1
谢谢你,Herman。我也在使用Mono,你的回答非常有帮助。@LynnCrumbling,我不确定这个问题在StackOverflow上应该如何处理,但是这个答案绝对有用,我是通过搜索标题中精确的错误信息找到它的。 - Ken Pespisa
3
@KenPespisa你好,根据你的声望,你一定不陌生于SO(指Stack Overflow)。我想以一个模拟的例子来说明我的问题:如果你遇到了一个帖子,其中明确写着“我正在使用Fortran并看到XYZ错误”,而有人回复说“当你有一个坏指针时,在Cobol中也会出现这种情况!”那么你会将其点踩;因为这个问题没有被标记为Cobol,所以这个答案是无关紧要的。但是!仅仅因为这个答案对这个问题不相关,并不意味着它对某些人没用。为什么不开一个新问题,让答案适用,并回答它呢? - Lynn Crumbling
1
你说得对,那是最好的选择。我需要花一些时间来思考。这是我第一次遇到这种情况。将错误信息添加到新问题标题中并标记为Mono即可解决。 - Ken Pespisa
显示剩余6条评论

1

我知道这个问题已经有一个被接受的答案,但是在评论中有人问是否有一种解决方案可以在web.config之外完成。我有一个ListView产生了完全相同的错误,将EnableViewState设置为false解决了我的问题。


在使用匿名变量(var recordInfo = dc.)调用数据库中的记录时,我遇到了与FirstOrDefault()相同的错误。我已经在web.config文件中设置了属性<add key="aspnet:MaxHttpCollectionKeys" value="2000" />。当我使用适当的模型变量(MyModel recordInfo = dc.)时,问题得到了解决。 - Pranesh Janarthanan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接