ViewState Chunking в asp.net

Я все время слышу эти слова "Viewstate Chunking". Что такое Viewstate Chunking?

А как это работает для страниц ASP.NET?


person Sujit    schedule 02.05.2012    source источник


Ответы (2)


Когда ViewState на вашей странице становится очень большим, это может быть проблемой, поскольку некоторые брандмауэры и прокси-серверы предотвращают доступ к страницам, содержащим ViewState огромных размеров. Для этой цели ASP.NET вводит механизм фрагментации ViewState. Таким образом, ASP.NET позволяет разделить одно скрытое поле ViewState на несколько с помощью свойства MaxPageStateFieldLength в разделе web.config.

Когда для свойства MaxPageStateFieldLength установлено положительное число, состояние представления, отправляемое в клиентский браузер, разбивается на несколько скрытых полей.

Установка для свойства MaxPageStateFieldLength отрицательного числа (по умолчанию) указывает, что поле состояния просмотра не должно быть разделено на части. Установка для MaxPageStateFieldLength небольшого числа может привести к снижению производительности.

Пример ViewState до:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88KwANAGQYAQUJR3Jp
ZFZpZXcxD2dk4sjERFfnDXV/hMFGAL10HQUnZbk=" />

Затем установите в web.config:

<pages maxPageStateFieldLength="40">

Пример ViewState после:

<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT"value="3" />
<input type="hidden" name="__VIEWSTATE"
id="__VIEWSTATE" value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88" />
<input type="hidden" name="__VIEWSTATE1"
id="__VIEWSTATE1" value="KwANAGQYAQUJR3JpZFZpZXcxD2dk4sjERFfnDXV/" />
<input type="hidden" name="__VIEWSTATE2"
id="__VIEWSTATE2" value="hMFGAL10HQUnZbk=" /> 

надеюсь, это поможет вам!

person kril    schedule 05.09.2012
comment
Скрытое поле EVENTVALIDATION также может стать большим. Можно и это разделить? - person George Filippakos; 14.02.2014
comment
обратите внимание, что элемент ‹pages› находится внутри элемента ‹system.web› в web.config. - person scrat.squirrel; 26.11.2014

Из Что нового в управлении состоянием ASP.NET - MSDN

Если объем данных состояния представления становится слишком большим, фрагменты состояния представления автоматически разбивают данные на фрагменты и помещают данные в несколько полей скрытой формы.

Зачем нам нужно Viewstate Chunking?

Вот выдержка из ViewState Overivew - MSDN

Еще одно важное соображение заключается в том, что если объем данных в скрытом поле становится большим, некоторые прокси-серверы и брандмауэры будут препятствовать доступу к странице, которая их содержит. Поскольку максимальное количество может варьироваться в зависимости от реализации брандмауэра и прокси, большие скрытые поля могут вызывать спорадические проблемы. Чтобы избежать этой проблемы, если объем данных, хранящихся в свойстве ViewState, превышает значение, указанное на странице MaxPageStateFieldLength, страница разбивает состояние просмотра на несколько скрытых полей, чтобы уменьшить размер каждого отдельного поля ниже размера, который отклоняется брандмауэрами. .

person Habib    schedule 02.05.2012