Asp.net应用程序状态到期

时间:2012-01-01 17:47:24

标签: asp.net web-applications web-config

我认为应用程序状态和会话状态是两回事。

如果我可以设置会话状态的到期时间,我可以在web.config中对应用程序状态执行相同的操作吗?

我只想在5分钟后阻止我的应用程序重建。

我不确切知道会发生什么。首次访问网站时,该网站需要10秒钟才能显示。如果我在5分钟之前返回网站,该网站会立即显示。如果超过5分钟不活动,当我再次访问该站点时,该站点需要10秒钟。我想这是应用程序状态谁过期了?

4 个答案:

答案 0 :(得分:2)

我知道让网站保持活力的最简单方法是确保流量始终通过。如果您有权访问预定的作业运行者,请每隔一两分钟对一个虚拟的aspx页面执行ping操作 - 这样,您的应用程序应无限期运行。

如果没有,有一些欺骗系统的技术。您可以构建一个缓存项,并在该缓存项到期时创建另一个缓存项。这将每隔X分钟持续运行代码,这将使应用程序保持活跃状态​​。这个问题是,如果应用程序曾经死亡(服务器重启,IIS重启等),应用程序将会死亡,直到有人提出真正的请求,此时它将无限期地保持活着。

此技术有时用于模拟ASP.NET中的任务调度程序。请记住,这并不完美。

编辑:为了澄清,您不仅要创建一个新的缓存项,而是实际向页面发出请求,然后该页面将创建缓存项。这可以确保通过IIS进行另一个请求,从而运行整个生命周期,使应用程序保持活动状态。

即使您将会话超时设置为高,也无法保证它会保持不变。我已经与托管公司打过交道,这些托管公司将在几分钟不活动后回收您的应用程序池,从而杀死您可能已打开的任何会话。他们并不关心您可能会打开会话 - 他们只是试图挤出他们可以从服务器中取出的每个CPU周期。因此,如果您使用的是共享主机,您可能需要牢记这一点 - 您可能无法控制它们杀死您应用的频率。

答案 1 :(得分:0)

应用程序状态在创建第一个会话时启动,并在最后一个会话到期后自动结束。只要您继续访问该网站,该应用程序将保持活动状态。

我不知道你的应用程序“重建”是什么意思。更改任何相关文件(即具有可编译代码的文件)将导致应用程序重新编译(如果您有Web目录)或重新加载(如果您有Web应用程序)。此操作将始终结束所有会话并结束应用程序。

答案 2 :(得分:0)

不确定它是否仍然存在。

问题与SessionState或ApplicationState没有关联。

为避免您的网站反应迟钝,您必须激活IIS的 AlwaysRunning 模式 为此,请在下一步添加到web.config

<applicationPools> 
    <add name="MyAppWorkerProcess" startMode="AlwaysRunning" /> 
</applicationPools>

答案 3 :(得分:-2)

您可以在配置文件中配置会话状态以防止此过期。 例如:

<sessionState 
            mode="SQLServer"
            sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
            cookieless="false" 
            timeout="20" 
    />