1

我们的 Web 应用程序位于 .net 1.1 上,并且我们有一些遗留代码每隔几天就会挂起 IIS。

我正在考虑每隔几天修改 machine.config 设置以重新启动 aspnet 进程,但问题是它会杀死进程中的现有会话。我能以某种方式避免它。

有没有更好的方法来处理这种情况?现在客户端每隔几天手动重新启动 IIS。

谢谢

编辑:如果你有 - 在你的会话中不可序列化的对象, - 不能使用 sql-server

那么好的解决方法是使用“idleTimeout”。如果在指定时间之前服务器上没有任何活动,它将关闭 asp_net 进程。在下一个请求中,它会产生 asp_net 进程。

4

2 回答 2

2

我建议两件事:

  • 将应用程序配置为使用SQL Server 存储会话数据- 这允许会话数据在 Web 应用程序重新启动后仍然存在
  • 配置应用程序池以定期回收工作进程在此处输入图像描述

当然,更好的办法是将 Web 应用程序更新到最新的框架版本并同时修复问题,以防止这种情况发生。

于 2011-08-23T19:40:08.923 回答
0

您实际上是否在 Session 中存储任何类型的数据?如果你这样做,它是可序列化的吗?如果是,只需将 Web.config 更改为使用StateServer

您只需要通过转到控制面板--> 管理工具--> 服务并设置 ASP .NET 状态服务器自动启动来自动启动 ASP .NET 状态服务。

这将允许您重新启动 aspnet_wp.exe 进程而不会丢失会话信息;同样,唯一的要求是您在会话中输入的信息是可序列化的(如果您的代码没有做任何疯狂的事情,这很可能是这种情况,或者至少应该很容易做到)

于 2011-08-23T20:10:09.170 回答