访问者数量对于asp.net c中的网站,每小时重置为0

时间:2016-06-28 09:44:43

标签: c# asp.net

访客数量每隔一小时重置为零。

我每天都需要网站访问者总数。这样我就可以每天将总计数存储在DB中。

Protected void Session_Start(Object sender, EventArgs e)
{
    Application.Lock();
    Application["SiteVisitedCounter"] = Convert.ToInt32(Application["SiteVisitedCounter"]) + 1;
    Application.UnLock();
}

有没有其他方法可以存储每天的访客总数?

1 个答案:

答案 0 :(得分:1)

正如MarcusVinicius回答here

您可以在IIS中配置Periodic Restart Settings for Application Pool Recycling

  

该元素包含允许您控制应用程序池何时被回收的配置设置。您可以指定Internet Information Services(IIS)7在一段时间间隔(以分钟为单位)或每天的特定时间后回收应用程序池。您还可以将IIS配置为基于应用程序池中的工作进程正在使用的虚拟内存或物理内存量的回收,或者在工作进程处理了特定数量的请求后将IIS配置为回收应用程序池。

但是这会导致在重新启动池期间将应用程序置于脱机状态的副作用,因此如果您在此时连接了任何用户,则会丢失其会话。这可以通过在没有用户连接的情况下重新启动应用程序来最小化,例如在黎明时。

以下配置代码段将应用程序池设置为每天在凌晨3点回收:

<add name="Example">
   <recycling logEventOnRecycle="Schedule">
     <periodicRestart>
       <schedule>
          <clear />
          <add value="03:00:00" />
        </schedule>
     </periodicRestart>
   </recycling>
 <processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>

(OR)

Application不是永久物。它是在应用程序启动后创建的(例如,第一个会话已启动),并在应用程序池超时后进行处置。您可以保留变量,也可以只更改AppPool中的Idle time-out参数

  

(IIS =&gt;应用程序池=&gt;您的AppPool(如果您是,则为DefaultAppPool)   没有定义一个)=&gt;高级设置=&gt;闲置超时)。