0

我有大约50个应用程序变量为每个搜索数据库。从单个Search.aspx页面中查询总共50个searchDB,具体取决于在连接到特定数据库的URL中传递的查询字符串。例如:如果Search.aspx?li = 1,则连接到1SearchDB,如果Search.aspx?li = 2,则连接到2SearchDB,..... 50SearcgDB。为什么在ASP.NET中一段时间​​后Global.asax的命中计数器(应用程序变量)设置为'0'?

我维护每个searchDB的总访问者,具体取决于URL中的QueryString并递增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后分钟)它重新启动计数器。当我使用它时,它工作正常!为什么会发生?

回答

0

这是因为Application_Start在应用程序重新启动时被触发并重置您的计数器,并且您的应用程序可能会通过您的池设置自动重新启动。

+0

,但我没有重新启动机器。它必须坚持仍然我重新启动我的计算机。当我启动应用程序20-25分钟后它显示正确计数器存在于我上次执行计数+ 1。 –

+0

@SHEKHARSHETE池默认情况下具有自动重新启动设置,如果您可以打开并查看它并更改它们,则可以避免这种情况。 – Aristos

+0

好@Aristos我会检查..!如果我在IIS中的WebServer上托管它,它会工作吗? –

0
  1. 应用程序可能会重新启动甚至web.config文件被修改
  2. 或发生任何致命的异常 - 应用程序可能会重新启动...所以确认是否被提出任何致命异常...
  3. 我怀疑应用程序计数器递增必须被Application.Lock()包围,以便同步值。

希望它有助于 HydTechie

相关问题