Подтвердить что ты не робот

Срок действия визы истекает?

Скажем, у вас есть страница aspx, которая не полагается на сеанс, но полагается на viewstate для стойкости между postbacks.

Если пользователь обращается к этой странице и уходит на длинный обед, будет ли viewstate оставаться верным, когда он вернется?

4b9b3361

Ответ 1

No ViewState не поддерживается как часть процесса PostBack. Однако вы можете переопределить класс страницы SavePageStateToPersistenceMedium() и LoadPageStateFromPersistenceMedium(), чтобы реализовать это поведение, если это необходимо. Для получения дополнительной информации прочтите Понимание ASP.NET ViewState.

Обратите внимание, что Страница ViewState хранится в сеансе, поэтому, если ваш сеанс истекает, ViewState будет потерян. Я бы не сказал, что это истечение срока действия ViewState, но да, он будет уничтожен после таймаута сеанса.

Ответ 2

сам вид не отображается. Поскольку он отправлен обратно в форме, его можно восстановить в любое время.

Согласно MSDN: "... возможно, что состояние просмотра истекает, если страница не отправлена ​​обратно в течение срока действия сеанса". Таким образом, в раунде примерно так, он может истечь, если ваш сеанс работает, но viewstate не истекает напрямую. Поскольку вы все равно не используете состояние сеанса, вам не нужно беспокоиться о неявном истечении срока действия.

Обратите внимание, что я бы не сказал, что это истекло. Это была MS, которую я цитировал в своей статье под названием Управление ViewState

Ответ 3

Viewstate не истекает.

Все данные в представлении хранятся на клиенте и отправляются обратно на сервер, когда пользователь выполняет обратную передачу.

Это имеет очень интересные последствия и объясняется очень подробно здесь.

Ответ 4

Кроме того, в качестве получения, по умолчанию ASP.NET шифрует ViewState с помощью автогенерированного ключа. Это можно переопределить с помощью элемента MachineKey в файле web.congif. Несмотря на то, что ViewState не истечет, он может стать недействительным, если для дешифрования ViewState используется другой автогенерированный ключ, например, после IIS Reset, перераспределения приложения или нажатия другого сервера в веб-ферме. Если вы планируете хранить просмотр в течение длительного времени, следите за тем, как он зашифрован/расшифрован.

http://msdn.microsoft.com/en-us/library/ms998288.aspx

Ответ 5

Да, ViewState истекает в определенных условиях. Например, когда вы используете iframe: s или когда вы поддерживаете "живое" соединение с сервером с регулярными обратными передачами. Затем вы можете изучить эту опцию: <sessionPageState historySize="9"/>, которая на самом деле жестко кодирует, сколько "результатов обратной передачи" хранится в сеансе (если используется SessionPageStatePerster). Каждый postback хранит его ViewState в конце очереди в сеансе [ "__ VIEWSTATEQUEUE" ] и удаляет ViewStates, которые являются "слишком старыми". И как вы думаете, SessionPageStatePerster решает, какие ViewStates являются слишком старыми.. путем настройки некоторой произвольной historySize-константы в web.config.. Omg! Это тоже я навсегда, чтобы найти эту проблему... Моя ненависть к программированию asp.net теперь неописана.. grrr...

Ответ 6

Viewstate не истекает, пока они все еще находятся на странице, он все равно будет работать и функционировать.

Ответ 7

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

Пока вы не полагаетесь на сеанс, у вас не должно возникнуть проблем с восстановлением состояния страницы. Легко проверить код состояния страницы, если вы хотите: просто установите, что ваш сеанс истекает через 60 секунд в вашем web.config, затем загрузите свою страницу, подождите немного больше минуты (перейдите к переполнению стека и ответьте на некоторые вопросы) а затем нажмите кнопку на своей странице.

Ответ 8

Извините, что пережить этот старый поток, но теперь доступна новая информация:

Да, срок действия ViewStates. Я прихожу с 19 часов, исследуя проблему ViewStates, теряющую свои значения между ретрансляцией длинных интервалов времени. Мне потребовалось некоторое время, читая MSDN-документы и ответы Stackoverflow, говоря, что это было практически невозможно, если не была применена пользовательская реализация хранилища ViewState, которая, как я знаю, не соответствует действительности.

Моя проблема происходила в среде SharePoint 2013. Служба, известная как Distributed Cache (a.k.a. AppFabric), выполняет кэширование ViewState и имеет связанное с ней время, чтобы жить. Вы можете найти более подробную информацию здесь: http://blogs.msdn.com/b/besidethepoint/archive/2013/03/27/appfabric-caching-and-sharepoint-1.aspx

Интересный бит информации можно найти в этой фразе: "Чтобы повысить производительность страницы, начиная с SharePoint 2013 SharePoint кэширует сервер данных ViewState, а не передает его обратно и обратно клиентам".

Я надеюсь, что эта информация поможет кому-то так отчаянно, как я был 19 часов назад.

Ответ 9

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

Ответ 10

По умолчанию Viewstate входит в состав содержимого html как скрытый ввод. Это означает, что он не истечет, но что все в viewstate должно быть загружено из пользовательского браузера. Поскольку это, как правило, самая медленная часть соединения в общедоступном узле, добавив много вещей в viewstate, вы можете быстро сделать свой сайт очень медленным.

Ответ 11

Короткий ответ: no.

Более длинный ответ: это зависит от реализации хранилища ViewState. Вы можете предоставить пользовательскую реализацию ViewState, которая может истечь через заданное количество времени. Например, вы можете хранить ViewState в базе данных или на диске и отправлять только некоторую ссылку на сохраненное значение в скрытом поле. Затем вы можете использовать пакетную обработку для удаления устаревших данных ViewState или выполнения срока действия по запросу.