Почему после некоторого времени в 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 ответа
- Приложение может перезапуститься даже после изменения web.config
- ИЛИ произошло любое неустранимое исключение - приложение может перезапуститься... поэтому проверьте, не возникло ли какое-либо неустранимое исключение...
- Я подозреваю, что приращения счетчика приложения должны быть отсортированы с помощью Application.Lock(), чтобы синхронизировать значения.
надеюсь, это поможет HydTechie
Это потому что Application_Start
срабатывает и сбрасывает ваши счетчики при перезапуске приложения, и, вероятно, ваше приложение автоматически перезапускается в соответствии с настройками вашего пула.