由于“更改垃圾箱”而停止回收应用程序池中的ASP.Net

时间:2009-08-11 16:16:48

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

问候,  我有一个大型.Net网络应用程序,它运行在一个刀片服务器上,代码库基于NAS。每隔一段时间,nas的响应时间会略有波动,导致.NET认为bin中的某些内容已经发生变化并启动了应用程序池的循环。实际上没有发生任何变化。有没有办法禁用.Net监控垃圾箱的变化?

3 个答案:

答案 0 :(得分: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 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() {})

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:-2)

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

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