Вопрос

Допустим, у вас есть страница aspx, которая не зависит от сеанса, но использует viewstate для обеспечения устойчивости между обратными передачами.

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Состояние представления не истекает.

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

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

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

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

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

Состояние представления не истекает, пока они все еще находятся на странице, они все еще будут там и работоспособны.

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

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

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

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

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

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

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

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

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

Краткий ответ: нет.

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

Состояние просмотра не истекает. После перенаправления на другую страницу значение состояния просмотра теряется или срок действия истекает. для получения более подробной информации http: //www.c-sharpcorner .com / UploadFile / 78d182 / Asp-Net-государственное управление-технологии /

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top