如何重置日常的应用程序变量(How to reset an application variable

2019-07-21 02:30发布

我写一个程序记录服务电话和处理完成。 我们拥有一批谁打开用户和关闭电话,我想在任何时候都调用总数今日开盘和总数今日闭幕,它们之间的区别显示。 我想有一个应用程序变量这样做的。 我每天给这些变量重置为0。 我会在哪里做呢? 我在Global.asax,但在这种情况可能是做思想? 在应用程序运行所有的时间,所以我想的Application_Start是不恰当的。 那么在哪里呢? 谢谢。

Answer 1:

我会存储到数据库的调用,并做了选择,其通过当天群体得到总的调用等进行显示。

这样,当新的一天开始,你不需要担心IIS复位摧毁你的内存中的数据会自动重置为您服务。

如果你不想询问过于频繁的性能损失,有许多可用的缓存选项。



Answer 2:

您可以配置为应用程序池回收周期重新启动设置在IIS:

该元素包含的配置设置,允许当一个应用程序池被回收你控制。 您可以指定Internet信息服务(IIS)7回收的时间间隔后的应用程序池(分钟)或在特定时间的每一天。 还可以配置IIS到基座上的虚拟存储器或物理存储器的是,在应用程序池中的工作进程正在使用或配置IIS以回收应用程序池中的工作过程已处理的请求的具体数目后的量再循环。

但是,这在池重新启动时把应用程序脱机的副作用,因此,如果您有任何用户连接在那个时候它就会失去它的会话。 这可以通过重新启动在时间的应用程序最小化,你有没有用户在黎明连接,等等。

下面的代码片段配置设置的应用程序池回收,每天在3:00 AM:

<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>


Answer 3:

我必须和上次计数器重置日期变量,并检查日期是“今天”上的每个访问计数器。

除非你有关键的性能问题,我想这会是一段路要走。

样品容易懒惰的代码来调用每当你更新计数器:

lock(myCounter)
{ 
  if(DateTime.Now.Date != lastDateCounterWasReset)
  {
     lastDateCounterWasReset = DateTime.Now.Date;
     myCounter = 0;
  }
  myCounter++;
}

现在,我们需要更多地了解你希望如何被保存了这些变量( myCounterlastDateCounterWasReset ),但可能是任何地方基本上(数据库,文件系统等)



Answer 4:

我想你可以使用Application_BeginRequest方法。 使用一个布尔值,看它是否已经运行的那一天。

另一种选择是用一个隐藏URL重置调度。



文章来源: How to reset an application variable daily