ASP.Net постоянные данные в приложении - PullRequest
1 голос
/ 26 февраля 2009

Как сохранить пользовательские данные для приложения ASP.Net.

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

Мне нужно что-то, что может быть доступно ГЛОБАЛЬНО любым классом моего приложения.

Советы приветствуются.

Я попытался использовать сервер состояний сеанса asp.net, но у меня произошел сбой некоторых библиотек DLL из-за их несериализации.

Есть ли другой способ иметь постоянную переменную в приложении?

Ответы [ 7 ]

4 голосов
/ 26 февраля 2009

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

Вот учебник о том, как его настроить.

1 голос
/ 26 февраля 2009

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

HttpContext.Current.Session

Чтобы избежать потери сеансов при повторном использовании рабочего процесса, используйте режим StateServer .

1 голос
/ 26 февраля 2009

Вы можете изменить Session State Server, чтобы он не работал, что сделает его гораздо более стабильным, а также отделит его от рабочего процесса (вам нужно будет запустить Asp.NET State Service на сервере, если он еще не запущен)

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/>

Кроме того, если вам нужно поделиться им между приложениями в одном домене, вы сможете предоставить им тот же ключ машины

1 голос
/ 26 февраля 2009

Хранение данных в базе данных (например, SQL Server).

0 голосов
/ 27 февраля 2009

Если вы потеряете данные при перезагрузке рабочего процесса, вам следует прекратить использование режима персистентности InProc для сеанса. Используйте StateServer или SQL Server. В конечном итоге вы можете создать свой собственный модуль персистентности сеанса, если ни один из них не удовлетворит вас.

0 голосов
/ 26 февраля 2009

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

Я пытаюсь создать свое приложение в многоуровневой конфигурации с объектами бизнес-сущностей. Методы фабрики для моих объектов используют кеш, как ленивый шаблон инстанции. Если это в cahce, потяните его. Если нет, поместите его в кэш на следующий раз.

* 1005 т.е. *

MyAppsNameSpace.MyBusinessLayerNameSpace.MyObject.GetObject(objectID)

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

Это можно использовать во всем приложении, и поскольку механизм кэширования поддерживается централизованно, вам не нужно об этом беспокоиться.

0 голосов
/ 26 февраля 2009

Вы можете использовать поставщика профилей с базой данных SQL в качестве резервного хранилища.

См. Статья MSDN

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