Я хотел бы знать, есть ли действительный сеанс или статический в среде .NET. Что мне нужно, так это переменная для хранения некоторых данных, сохраняющих свое значение, доступная через все страницы ASP.NET/формы C#, но не уникальная для всех пользователей, использующих приложение.
Альтернативный сеанс/статические переменные ASP.NET/C#
Ответы (6)
Тогда ваш ответ, скорее всего, будет «Кэш приложений». Посмотрите на System.Web.Caching
Поскольку время жизни объекта кеша обсуждается, вы можете установить его. Пользователь не указал, однако, как долго это должно прожить. Между перезапусками приложений? во время жизни одного экземпляра, должен ли он быть между экземплярами. Кэш подойдет для самого простого требования.
Я думаю, вы ищете состояние приложения, а не кэш приложения. Состояние приложения будет работать так же, как состояние сеанса, но будет общим для всех сеансов.
Пример использования:
Application["Message"] = "Welcome to my Website";
Дополнительная информация: http://www.codeproject.com/Articles/87316/A-walkthrough-to-Application-State
Можно ли использовать кеш приложения? он является общим для всех пользователей вашего приложения, доступен со всех страниц и не уникален для каждого пользователя.
см. это и это для получения дополнительных сведений об использовании API кэширования.
Вы можете попробовать справиться с этим с помощью переменной области приложения.
Сначала в файле Global.asax добавьте следующее:
void Application_Start(object sender, EventArgs e)
{
[Other Stuff Already Here Omitted]
Application["MyVariable"] = "My Default value";
}
Затем на любой странице вы можете получить доступ к этому:
var myVar = Application["MyVariable"];
Вы можете выставить класс как Static. Это сделает его доступным для всех сеансов, но только для этого экземпляра приложения.
Ответ - нет. На этом уровне не существует «среды .Net». Ваш код .Net также получает ограничения времени выполнения от хоста. Определим два хоста (их больше): IIS и "просто основной exe".
Для кода, размещенного в IIS, вы работаете в среде, где хост создает поток (или, скорее, выделяет его) и выполняет ваш код в этом потоке. Хост сам определяет, когда и нужно ли сбрасывать процесс. Вы не можете или, скорее, не должны делать никаких предположений о том, какой процесс или поток выполняет ваш код. Это усиливается, когда вы говорите о iis на ферме.
Для простого основного кода в exe операционная система создает процесс и начальный первый поток, а также устанавливает указатель выполнения на первый оператор в основной функции.
«static» поддерживает состояние на протяжении всего жизненного цикла процесса владения, что является гарантией, предоставляемой вам .Net.
«Сеанс» - это конкретная реализация, которая обрабатывает гораздо больше, чем статические свойства.
Я бы порекомендовал уточнить вопрос, где вы также описываете своего хоста. Для iis ответом может быть кэш AppFabric.
Надеюсь это поможет