Определение объема и срока службы global.asax - PullRequest
3 голосов
/ 05 апреля 2011

Мне нужно реализовать несколько действий на уровне приложения в проекте, над которым я сейчас работаю. Есть несколько вещей, которые мне нужны, чтобы разобраться: 1. Где и как определить переменные уровня приложения? 2. Каково время жизни этих переменных? или, более точно, в каких сценариях они отбрасываются? (Перезапуск пула приложений? Двоичные файлы приложений удаляются из памяти и перекомпилируются при следующем запросе? И т. Д.) 3. Является ли файл global.asax хорошим местом для установки счетчика сеансов, или, возможно, сохранение значения в БД / файле является лучшим способом сохранения данных такого типа?

Любые комментарии или идеи приветствуются. Спасибо! -Elad

1 Ответ

3 голосов
/ 05 апреля 2011

Переменные уровня приложения имеют время жизни приложения. Это означает, что если пул приложений перерабатывается, они отбрасываются.
Пул приложений может быть переработан по разным причинам. 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-файл, чтобы вы могли его подготовить, легко заполняя ваши свойства. ДБ тоже подойдет. Я бы сделал то же самое со счетчиком сеансов.

...