0

每个搜索数据库都有大约 50 个应用程序变量。从单个 Search.aspx 页面查询总共 50 个 searchDB,具体取决于它连接到特定数据库的 URL 中传递的查询字符串。

例如:如果 Search.aspx?li=1 则连接到 1SearchDB,如果 Search.aspx?li=2 则连接到 2SearchDB,.....50SercgDB。

我根据 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 回答
0
  1. 即使 web.config 被修改,应用程序也可能重新启动
  2. 或发生任何致命异常 - 应用程序可能会重新启动......所以验证是否引发任何致命异常......
  3. 我怀疑应用程序计数器增量必须由 Application.Lock() 包围,以便同步值。

希望它可以帮助 HydTechie

于 2013-05-16T15:37:52.847 回答