пятница, 27 января 2012 г.

Ошибка "Operation is not valid due to the current state of the object." при сохранении формы

После внеочередного апдейта MS11-100 Microsoft от 29 декабря 2011 года против DDoS перестали работать формы с большим числом контролов.
Выпадают с такой ошибой:
Operation is not valid due to the current state of the object.

В StackTrace висит последним вызов:
System.Web.HttpRequest.FillInFormCollection()

После разборок, выяснилось, что это включилось/появилось ограничение на общее число отправляемых формой ключей (ну и файлов и объектов JSON). По умолчанию значение равно 1000. Лечится добавлением в web.config в секцию AppSettings следующей строки с указанием нужного вам количества ключей:
<add key="aspnet:MaxHttpCollectionKeys" value="20000" />

Подробнее.

4 комментария:

Анонимный комментирует...

web.config -- большой :)
Подскажите, куда именно нужно добавлять данную запись?

Polyakov комментирует...

В секцию AppSettings

Анонимный комментирует...

А как Вы выяснили, что проблема в ограничении ключей и что это из-за обновления?

Polyakov комментирует...

Вот из-за System.Web.HttpRequest.FillInFormCollection() и набрёл. Пошёл смотреть что делает, оказалось из request загружает данные от клиента, а их и нету...