我在IIS中运行我的网站,并且我有一些运行计时器的事件。 (我知道这是糟糕的设计,并计划重新编码,但现在我想检查是否有快速解决方案)
经过一段时间网站才会入睡,这就是为什么我的计时器事件什么都不做。
是否有IIS设置或其他方式拒绝睡眠?
答案 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(零)以禁用网站睡眠。