我有一个ASP.NET WebSite,每天1-2小时就会重启,因此会话和其他内容都消失了,用户也在抱怨它,因为他们打开一个页面并做了20分钟的事情,当他们提交时它,一个很好的“我们很抱歉”页面就在那里。
我没有做任何重启应用程序的事情(更改web.config,更改文件,甚至其他有缺陷的事情,比如删除App_Data中通常不会导致重启的文件夹)。
它可以与服务器的硬件相关吗?它没那么强大。
答案 0 :(得分:4)
我猜这是recycling。
答案 1 :(得分:3)
IIS中的应用程序池默认情况下会被回收 - 超时后或“n”命中后。
这应该是预期的,并且是正常处理的一部分(尽管可以在应用程序池配置中禁用它; IIS6 | IIS7)。
这会破坏您的应用程序这一事实表明您正在使用许多内容,例如内存中的会话。考虑将这些移到数据库支持的实现。除了承受应用程序池重新启动和服务器重新启动之外,这还允许您将站点扩展到多个服务器。
答案 2 :(得分:2)
Check this blog post关于appdomain回收的一些可能原因。有很多可能的原因。
如果您无法解决问题,可以从进程内会话状态切换到提升会话状态服务器或将会话状态存储在数据库中。这两个选项都很容易设置并且运行良好,但是会产生性能影响(我认为在10-20%之间)。 There is a nice article here关于如何设置会话状态服务器。
答案 3 :(得分:1)
答案 4 :(得分:1)
由于您提到您的服务器很小,您可能会检查您的工作进程是否消耗了您在processModel in machine.config中设置的更多内存。这可能导致重置。
答案 5 :(得分:1)
您确定ASP.NET应用程序实际重启吗?或者你认为它是因为会话丢失而发生的吗?
您的应用程序(和IIS')会话超时变量是什么?超时的默认值是20分钟,这就是我要问的原因。您可以在web.config中设置超时,如下所示:
<system.web>
<sessionState timeout="120"/>
</system.web>
但除此之外,IIS中还有一些地方可以设置它。对于IIS6,这些地方是:
我不确定两者是否真的需要,但我通常将它们设置为与我在web.config中设置的值相同的值。
答案 6 :(得分:0)
是否有任何关于事件日志中记录重启原因的指示?
答案 7 :(得分:0)
您是否在服务器上运行了任何防病毒软件。对web.config的更改将导致应用程序重新启动,因此在某些情况下,通过web.config传递的防病毒软件可能会更改文件中可能导致重置的属性。
尝试禁用任何AV软件或从AV自动扫描中排除Web应用程序目录。