0

検索データベースごとに約 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 分)、カウンターが再起動します。私がそれを使用しているとき、それはうまくいきます!なぜこれが起こるのですか?

4

2 に答える 2

0

これはApplication_Start、アプリケーションの再起動時に が起動され、カウンターがリセットされ、おそらくプールの設定によってアプリケーションが自動再起動されるためです。

于 2012-07-04T10:21:47.637 に答える