ASP.Чистые сохраняемые данные во всем приложении

StackOverflow https://stackoverflow.com/questions/591019

  •  09-09-2019
  •  | 
  •  

Вопрос

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

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

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

Совет очень приветствуется.

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

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

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

Решение

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

Вот руководство о том, как это настроить.

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

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

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

HttpContext.Current.Session

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

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

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

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

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

Я пытаюсь спроектировать свое приложение в n-уровневой настройке с использованием объектов business entity.Фабричные методы для моих объектов используют кэш вроде как шаблон отложенного создания экземпляра.Если это в каче, потяни за это.Если нет, поместите его в кэш для следующего раза.

т.е.

MyAppsNameSpace.MyBusinessLayerNameSpace.MyObject.GetObject(objectID)

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

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

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

Видишь это Статья MSDN

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

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