Переменные уровня приложения имеют время жизни приложения. Это означает, что если пул приложений перерабатывается, они отбрасываются.
Пул приложений может быть переработан по разным причинам. IIS 6/7 можно настроить таким образом, чтобы пул приложений перезагружался через определенное время, после определенного количества запросов или через определенные интервалы.
Вы устанавливаете переменную приложения следующим образом:
Application["DbConfig"] = "my value";
но вы должны знать о проблемах, с которыми вы можете столкнуться, если попытаетесь установить / получить доступ в другом месте. Вы должны принять способ блокировки переменных при их обновлении.
Я использую web.config
для всех параметров конфигурации, а затем я создал свой собственный класс, который я использую для хранения полей приложения:
namespace Web.My
{
public class Application
{
public static string ApplicationStorageFolder
{
get
{
return (System.IO.Path.Combine(HttpContext.Current.Server.MapPath("~"), "_AppStorage"));
}
}
}
}
Если мне нужно установить некоторые поля, я делаю это при запуске приложения Application_Start
Если вам нужно сохранить информацию, вы можете создать свой собственный файл конфигурации (XML или простой текст) для хранения и чтения значений при запуске и завершении работы приложения. Вы можете сериализовать ваш класс в XML-файл, чтобы вы могли его подготовить, легко заполняя ваши свойства.
ДБ тоже подойдет.
Я бы сделал то же самое со счетчиком сеансов.