如果您不能延迟 AppDomain 回收,您可能需要禁用它。
有一个可以禁用的文件更改通知 (FCN)行为。
登记处
最初,它是一个 DWORD 注册表项HKLM\Software\Microsoft\ASP.NET\FCNMode
,将值设置为 1 应该禁用它。
代码(hack)到 .NET Framework 4.0
此hack可能适用于 2.0-3.5 和 4.0 框架。
//Disable AppDomain restart on file change
System.Reflection.PropertyInfo p =
typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor",
System.Reflection.BindingFlags.NonPublic
| System.Reflection.BindingFlags.Public
| System.Reflection.BindingFlags.Static);
object fcm = p.GetValue(null, null);
System.Reflection.MethodInfo m = fcm.GetType().GetMethod("Stop",
System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.NonPublic);
m.Invoke(fcm, new object[] { });
把它放在你的Global.asax
Application_Start
. 见这里。
如果您想禁用对特定路径或文件的监视,您StopMonitoringFile
可以StopMonitoringPath
使用FileChangesMonitor
. 但是,Bin
目录是一个特殊的目录,可能不受这两种方法的影响。
至少,您可以使用该_dirMonSpecialDirs
字段并调用StopMonitoring()
您的Bin
目录。
.NET 框架 4.5
在 .NET Framework 4.5 中,存在HttpRuntimeSection.FcnMode属性。没有太多关于它的文档,但您可以使用<httpRuntime fcnMode="Disabled"/>
.