在应用程序的已知文件夹中修改,添加或删除某些类型的文件将导致应用程序重新启动。但是,当应用程序中的日志文件更新时,为什么应用程序不会重新启动。 然后
PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);
object o = p.GetValue(null, null);
FieldInfo f = o.GetType().GetField("_dirMonSubdirs", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase);
object monitor = f.GetValue(o);
MethodInfo m = monitor.GetType().GetMethod("StopMonitoring", BindingFlags.Instance | BindingFlags.NonPublic);
m.Invoke(monitor, new object[] { });
通过这些更改,我可以创建/修改/删除文件夹,而不会导致应用程序重新启动。但是这段代码适用于所有应用程序的已知文件夹。我想知道是针对一个文件夹而不会导致应用程序重启。
答案 0 :(得分:0)
您的问题是因为只要您修改或删除应用程序目录中的任何文件,就会导致appDomain重新启动以加载更改。你可以找到4个选项:
注册表信息
loadTOCNode(3,'resolution'); HKLM \ SOFTWARE \微软\ ASP.NET \ FCNMode
下表列出了FCNMode DWORD值的可能值 以及与每个值相关联的行为。
值行为不存在这是默认行为。对于每一个 子目录,应用程序将创建一个将监视的对象 子目录。 0或大于2这是默认行为。 对于每个子目录,应用程序将创建一个对象 监视子目录。
1应用程序将禁用文件更改通知(FCN)。 [:)。
2应用程序将创建一个对象来监视main 目录。应用程序将使用此对象来监视每个对象 子目录。
上述方法取自here
此外,您可以浏览以下链接以获取更多信息:
嗯,这可能有助于解决您的问题,我无法找到有关停止针对特定文件夹的appDomain更改监控的任何信息。要么它会监视变化。 希望这可以帮助。欢呼声。