为文件夹重新启动应用程序删除,添加,更新(Application Restart for folde

2019-07-31 08:15发布

修改,增加或删除某些类型的应用程序的已知文件夹中的文件将导致restart.But当应用程序日志文件被更新,为什么应用程序没有重新启动应用程序。 然后

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[] { }); 

有了这些变化,我可以创建/修改/,而不会导致重新启动应用程序删除文件夹。 但是这个代码是对所有应用程序的已知folders.I想知道的是一个文件夹,而不会导致应用程序重新启动。

Answer 1:

你的问题是,因为只要你修改或删除应用程序目录中的任何文件,它是为了装载变化引起的AppDomain重新启动。 你有4个选项,据我可以寻找:

  1. 禁用目录监控,你已经尝试过。
  2. 该应用程序下创建一个虚拟目录,并指出这对应用程序文件夹之外的文件夹。 此举需要更改这个文件夹,可以更改内容。
  3. 使用进程外会话。
  4. 修改注册表,给定的(不推荐)禁用监控:

注册表信息

loadTOCNode(3, '分辨率'); HKLM \ SOFTWARE \微软\ ASP.NET \ FCNMode

下表列出了FCNMode DWORD值和与每个值相关联的行为可能的值。

值行为不存在这是默认的行为。 对于每个子目录,应用程序将创建一个对象,将监视子目录。 0或大于2,这是默认行为。 对于每个子目录,应用程序将创建一个对象,将监视子目录。

1应用程序将禁用文件更改通知(FCNs)。 [:)]。

2应用程序将创建一个对象来监视主目录。 该应用程序将使用这个对象来监视每个子目录。

上述方法是从采取这里

此外,你可以通过获取更多信息以下链接:

  • http://forums.asp.net/t/966593.aspx/1
  • http://blogs.msdn.com/b/toddca/archive/2005/12/01/499144.aspx
  • http://weblogs.asp.net/owscott/archive/2006/02/21/438678.aspx
  • http://aspadvice.com/blogs/joteke/archive/2006/02/22/15299.aspx

那么,这也许能帮助您的问题,我无法找到关于停止的AppDomain变化监测特定文件夹东西。 要么它会监视的变化与否。 希望这可以帮助。 干杯。



文章来源: Application Restart for folder deleted,added,updated