【问题标题】:Stop ASP.Net from recycling app pool due to "changes to the bin"由于“对 bin 的更改”,停止 ASP.Net 回收应用程序池
【发布时间】:2009-08-11 16:16:47
【问题描述】:

您好, 我有一个大型 .Net Web 应用程序,它在刀片服务器场上运行,代码库位于 NAS 上。每隔一段时间,nas 响应时间的轻微波动就会导致 .NET 认为 bin 中的某些内容发生了变化,并开始循环应用程序池。实际上并没有发生任何变化。有没有办法禁用 .Net 对 bin 更改的监控?

【问题讨论】:

  • 如果 /bin 中没有任何变化,是什么让您认为这是原因?
  • 嘿嘿,我喜欢这个问题的开头:“停止 ASP.Net。”
  • Keltex,因为我们已经登录了应用程序池,它说这就是重启的原因。
  • “nas导致.NET响应时间略有波动”,请证明。听起来不太可能。 “它说这就是原因”;这里的“那个”是什么?使用非本地硬盘驱动器作为应用程序文件夹的 IIS 存在存在问题。
  • 啊,我忘了这个问题。我们最终从 IBM 获得了某种针对 nas 的修复。

标签: asp.net windows iis-7 web-config


【解决方案1】:

这将结束它。现在您必须执行iisreset 来回收您的应用程序池。

'This is supposed to turn off the monitoring for directory deletes
'See https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=240686
'This incurs the penalty of an IISRESET or manually restarting the containing AppPool after every upgrade.
Dim pi As PropertyInfo
Dim o As Object
Dim m As MethodInfo
pi = GetType(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Static)
o = pi.GetValue(Nothing, Nothing)
m = o.GetType().GetMethod("Stop", BindingFlags.Instance Or BindingFlags.NonPublic)
m.Invoke(o, New Object() {})

【讨论】:

  • 最近尝试再次使用它,但我们认为它不适用于 .NET 4 网站。那好吧。它在 .NET 2 和 3.5 中运行良好。
【解决方案2】:

似乎还有一个热修复似乎能够通过注册表项禁用“功能”:

http://support.microsoft.com/kb/911272

不完全确定这是否适用于垃圾箱。

【讨论】:

    【解决方案3】:

    简单的答案是,你不能。如果 IIS 检测到其中一个二进制文件发生了变化,它必须重新加载以确保它使用的是正确的二进制文件。

    真正的问题是: a) IIS 是否真正检测到更改,还是由于“波动”导致操作系统认为文件暂时不存在? b) 如果“波动”是问题的根源,是什么原因造成的?如何解决?

    【讨论】:

    • 嗯,这是个大问题,也是我们正在研究的一个问题。我只是希望有一个权宜之计的解决方案,因为 nas 问题可能更大。
    猜你喜欢
    • 2011-03-10
    • 2010-09-28
    • 2011-01-12
    • 2011-08-22
    • 2019-11-22
    • 1970-01-01
    • 2020-05-23
    • 2012-03-17
    • 2023-03-26
    相关资源
    最近更新 更多