検索データベースごとに約 50 個のアプリケーション変数があります。URL で渡されたクエリ文字列に応じて、単一の Search.aspx ページからクエリされる合計 50 の searchDB が特定の DB に接続します。
例: Search.aspx?li=1 の場合は 1SearchDB に接続し、Search.aspx?li=2 の場合は 2SearchDB に接続し、.....50SearchDB に接続します。
URL の QueryString に応じて各 searchDB への訪問者の合計を維持し、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;
}
Search.aspx.cs の Page_Load では:
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 分)、カウンターが再起動します。私がそれを使用しているとき、それはうまくいきます!なぜこれが起こるのですか?