代码之家  ›  专栏  ›  技术社区  ›  ryber

由于“垃圾箱更改”,停止ASP.NET回收应用程序池

  •  1
  • ryber  · 技术社区  · 15 年前

    问候语, 我有一个大型的.NET Web应用程序,它在刀片服务器场上运行,代码基于NAS。每隔一段时间,NAS响应时间的轻微波动会导致.NET认为垃圾箱中的某些内容发生了变化,并启动应用程序池的回收。实际上没有发生任何变化。有没有一种方法可以禁用.NET对bin更改的监视?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Joshua    15 年前

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

    'This is supposed to turn off the monitoring for directory deletes
    'See https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=240686
    'This incurrs the penelty 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() {})
    
        2
  •  1
  •   ryber    15 年前

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

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

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

        3
  •  -2
  •   palehorse    15 年前

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

    真正的问题是: a)IIS是否真的检测到一个更改,或者是由于“波动”导致操作系统认为文件不存在? b)如果“波动”是问题的根源,是什么导致了这些问题?如何解决这个问题?