可以在IIS中禁用ASP.NET网站睡眠吗?

时间:2014-04-23 05:55:20

标签: asp.net iis

我在IIS中运行我的网站,并且我有一些运行计时器的事件。 (我知道这是糟糕的设计,并计划重新编码,但现在我想检查是否有快速解决方案)

经过一段时间网站才会入睡,这就是为什么我的计时器事件什么都不做。

是否有IIS设置或其他方式拒绝睡眠?

2 个答案:

答案 0 :(得分:4)

这可能对您有用,详见此处: -

http://forums.asp.net/t/1950241.aspx?ASP+NET+MVC+website+goes+to+sleep+How+to+nake+it+always+awake+

有很多方法可以在.NET中设置超时(会话超时,表单身份验证超时和IIS相关超时)。您的问题很可能与IIS Idle Timeout有关,如下所述:

在IIS中设置应用程序IdleTimeout属性: -

您可能需要检查IIS中的超时配置,因为此超时将覆盖web.config中定义的超时。

在IIS中有一个名为Idle Timeout的设置,默认为20分钟。这可以解释您的早期超时问题。

Configuring the IdleTimeout property within IIS

Scott Hanselman还解决了在this blog post中使用表单身份验证时处理超时时可能出现的奇怪问题。

其他一些常见的超时可能是通过会话或表单身份验证,如下所示进行调整。

在web.config中设置SessionState超时: -

您可以在元素中的web.config文件中更新会话状态的超时属性(如果这实际是超时),如下所示(默认为20分钟如下所示):

<configuration> 
 <system.web> 
 <!-- Adjust the timeout property below -->
 <sessionState mode="InProc" timeout="20"></sessionState> 
 </system.web> 
</configuration>

在web.config中设置表单身份验证超时: -

您可以通过调整web.config文件元素中的timeout属性来调整应用程序中Forms Authentication的特定超时属性。您还需要注意,如果您将slidingExpiration属性与超时结合使用,因为它们实际上可以比列出的超时更早到期。

<authentication mode="Forms"> 
 <forms name=".ASPXAUTH" loginUrl="~/Login.aspx" timeout="yourTimeoutInMinutes"></forms> 
</authentication>

因此,如果您想将身份验证令牌保持“活着”的数量延长至360分钟(6小时),您可以按如下所示进行设置:

<authentication mode="Forms"> 
 <forms name=".ASPXAUTH" loginUrl="~/Login.aspx" timeout="360"></forms> 
</authentication>

答案 1 :(得分:0)

如本页https://aspnetfaq.com/iis7-application-pool-idle-time-out-settings/所述,您可以将空闲超时设置为0(零)以禁用网站睡眠。