Почему после некоторого времени в ASP.NET счетчик посещений (переменная приложения) из Global.asax устанавливается в "0"?

У меня есть около 50 переменных приложения для каждой поисковой базы данных. Всего 50 searchDB, которые запрашиваются с одной страницы Search.aspx, в зависимости от строки запроса, переданной в URL, который он подключает к определенной базе данных.

Например: если Search.aspx? Li=1, то подключиться к 1SearchDB, если Search.aspx? Li=2, то подключиться к 2SearchDB, .....50SearcgDB.

Я поддерживаю общее количество посетителей каждой searchDB в зависимости от QueryString в URL и увеличиваю переменную приложения, которая находится в файле GLOBAL.ASAX.

В Global.asax:

void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        Application["1"] = 0;          
        Application["2"] = 0;
        .
        .
        Application["50"] = 0;

    }

В Page_Load Search.aspx.cs:

int LocalBody = Convert.ToInt32(Request.QueryString["li"]);
public void Page_Load(object sender, EventArgs e)
    {
    Label1.Text = GetHits(LocalBody).ToString();
    }

 private int GetHits(int LocalBody)
    {
        int counter=0;
        switch (LocalBody)
        {
            case 1:
                Application["1"] = (int)Application["1"] + 1;
                counter=(int)Application["1"];
                break;
            case 2:
                 Application["2"] = (int)Application["2"] + 1;
                counter=(int)Application["2"];
                break;
            .
            .
            case 50:
                Application["50"] = (int)Application["50"] + 1;
                counter=(int)Application["50"];
                break;            default:
                break;
        }
        return counter;

    }

Теперь проблема в том, что когда я запускаю приложение, через некоторое время (от 30 до 40 минут) оно перезапускает счетчик. Когда я использую его, то он работает нормально! Почему это происходит?

2 ответа

  1. Приложение может перезапуститься даже после изменения web.config
  2. ИЛИ произошло любое неустранимое исключение - приложение может перезапуститься... поэтому проверьте, не возникло ли какое-либо неустранимое исключение...
  3. Я подозреваю, что приращения счетчика приложения должны быть отсортированы с помощью Application.Lock(), чтобы синхронизировать значения.

надеюсь, это поможет HydTechie

Это потому что Application_Start срабатывает и сбрасывает ваши счетчики при перезапуске приложения, и, вероятно, ваше приложение автоматически перезапускается в соответствии с настройками вашего пула.

Другие вопросы по тегам