Почему Вы когда-либо использовали бы объект хранения ViewState asp.net по объекту хранения Сессии?

Вы можете преобразовать его в timedelta с точностью до дня. Чтобы извлечь целочисленное значение дней, вы разделите его на timedelta одного дня.

>>> x = np.timedelta64(2069211000000000, 'ns')
>>> days = x.astype('timedelta64[D]')
>>> days / np.timedelta64(1, 'D')
23

Или, как предположил @PhillipCloud, просто days.astype(int), поскольку timedelta - всего лишь 64-битное целое число, которое ('D', 'ns', ...).

Вы можете найти больше об этом здесь .

g3]

15
задан Mark Rogers 27 February 2009 в 20:55
поделиться

8 ответов

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

22
ответ дан 1 December 2019 в 00:11
поделиться

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

Состояние отображения является механизмом для запоминания состояния пользователя на клиенте. Сессия является механизмом для запоминания состояния пользователя на сервере.

Состояние отображения является переходным механизмом хранения. Средствам управления, которые используют состояние отображения, представили их состояние в странице HTML как скрытый вход. Для предотвращения вмешательства это подписывается. Это не шифруется, однако, таким образом, Вы, вероятно, не хотите помещать ЧТО-ЛИБО чувствительное там. Состояние отображения полезно для ситуаций, где Вы хотите отправить через серию нескольких запросов (загрузки страницы). Пример этого - когда форма не проверяет, потому что, возможно, пользователь ввел плохой адрес электронной почты или что-то, и Вы хотите восстановить форму, как это было перед отправленным пользователем. Оборотные стороны к этому - то, что состояние отображения является голодным зверем и может легко добавить 30-50% к размеру страницы.

Сессия, с другой стороны, хранится на сервере. Клиент получает маркер, который говорит сервер, какой блок памяти их. Это может быть намного более безопасно, чем состояние отображения, потому что данные не ретранслируются пользователю много раз. Существуют компромиссы все же. Ваш сервер может исчерпать память. Или, пользователь мог потерять данные, если их сессия разрушена.

Обычно нет никакого "правильного" ответа, на котором можно использовать. Это - все о том, что Вы пытаетесь выполнить.

Большинство вещей сделать со средствами управления должно использовать Состояние отображения. ЕСЛИ Вы имеете дело с уязвимой информацией однако, рассматриваете Сессию. Если у Вас есть данные, которые являются для определенного набора страниц, используйте состояние отображения. Если это - данные, в которых Вы будете нуждаться в течение визита пользователя на Вашем сайте, considier Сессия.

11
ответ дан 1 December 2019 в 00:11
поделиться

Например, когда Ваше приложение могло бы работать в компьютерной ферме, и Вы не можете настроить сессию для использования SQL-сервера. (Или использующий SQL-сервер слишком много хита производительности)

5
ответ дан 1 December 2019 в 00:11
поделиться

ViewState и Сессия имеют различные объемы. ViewState разработан, чтобы хранить более или менее текущие данные, во время "обратных передач", в то время как сессия используется для сохранения критических данных состояния сеанса. Я рекомендую использовать ViewState для состояния, связанного с определенной "сессией страницы".

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

Затем хорошая вещь - Вы, может беспрепятственно продолжить использовать стандартные веб-элементы управления в Платформе.NET, которая будет все использовать ViewState/ControlState для этого типа данных, не чрезмерно увеличивая размер ViewState. Механизм персистентности памяти сервера мог быть очень эффективным.

5
ответ дан 1 December 2019 в 00:11
поделиться

Едва ли прямой ответ на Ваш вопрос, но это может решить Ваш вопрос.

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

Создают класс, наследовал страницу, и переопределите PageStatePersister. http://msdn.microsoft.com/en-us/library/system.web.ui.sessionpagestatepersister.aspx

 public class RussPage : Page
    {
         protected override PageStatePersister PageStatePersister
        {
            get
            {
                return new SessionPageStatePersister(Page);
            }
        }
    }
4
ответ дан 1 December 2019 в 00:11
поделиться

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

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

4
ответ дан 1 December 2019 в 00:11
поделиться

Не ответ на Ваш вопрос, но одно из Ваших предположений является неправильным.

идентификаторы Сессии могут быть переданы в URL. Сессия не требует cookie.

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

<sessionState cookieless="true" />
2
ответ дан 1 December 2019 в 00:11
поделиться

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

1
ответ дан 1 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: