我们在 IIS 5 服务器上安装了 ASP.NET,以通过 Web 提供 .NET 应用程序。这个应用程序运行得很好,只是 aspnet_wp.exe 进程消耗过多的内存,并会被 ASP.NET定期回收。我们喜欢回收功能,但是我们希望可以ASP.NET定期回收,而不是等到内存很低后才进行回收。在 IIS 5 中,我们通常使用 IIS 5 进程回收工具完成此操作。我们该如何让 ASP.NET 也和IIS 5 进程回收工具一样,按设定的时间执行回收操作。
IIS 5 进程回收工具 (英文)是一个非常有用的工具,有了它,您可以将 IIS 5 配置为根据 http gets 的数量、时间、内存消耗量以及其他参数重新启动。这个工具是在发布 ASP.NET 前开发的,因此它根本无法识别 aspnet_wp.exe 这个在 IIS 5 服务器上运行 ASP.NET 应用程序的文件。然而,当使用进程回收工具、IISRESET 以及任何其他方法回收 IIS 时,ASP.NET 也会重新启动;不过您还可以使用内置在 ASP.NET 中的配置元素,单独回收 ASP.NET.这可以通过 ASP.NET 的 web.config 文件中的进程配置设置来实现。默认情况下,web.config 位于 %systemroot%\\Microsoft.Net\\Framework\\v\\CONFIG 目录中。它是一个 XML 文件,您可以使用记事本等文本编辑器来打开和编辑它。打开这个文件并搜索“processmodel".这将定位到进程模式配置部分,其中包含以下具有注释内容的节:
注意,可以为上面的“timeout"变量设置一个单位为时、分、秒的值,这个值指定了 aspnet_wp.exe 进程的生存时间。当 ASP.NET 启动 aspnet_wp.exe(它在首次启动时调用一个需要 ASP.NET 的页面)时,该计时器开始计时。当 asnet_wp.exe 进程”活着"的时间等于超时值时,将会被回收。
尽管这不同于设定一个日期和时间来回收 ASP.NET 进程,但是这可以实现ASP.NET定期回收,并且可以保证应用程序的正常运行。另外,您可以控制这个回收操作的其他方面,例如在工作进程不再使用时关闭它(从而实现在非高峰期执行回收操作)。
ASP.net 1.1开发的Web应用程序,在升级到2.0或3.5以后,通过IIS7发布。
程序中认证方式采用Form认证,Web.Config文件中代码如下:
- <authentication mode="Forms">
- <forms loginUrl="Pages\SystemPage\Login\logon.aspx" name=
".ADUAUTH" protection="All">- </forms>
- </authentication>
【遇到问题现象】
认证登录后,程序始终显示登录页 logon.aspx通过程序跟踪,发现 logon.aspx.cs中SetAuthCookie() 和 RedirectFromLoginPage()执行后均无效,无法改变Request.IsAuthenticated值,始终为false;
【解决方案】
运行IIS7 -> 该Web程序 -> 身份验证 -> Form身份验证 -> 编辑
【编辑推荐】