修改,增加或删除某些类型的应用程序的已知文件夹中的文件将导致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想知道的是一个文件夹,而不会导致应用程序重新启动。
你的问题是,因为只要你修改或删除应用程序目录中的任何文件,它是为了装载变化引起的AppDomain重新启动。 你有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变化监测特定文件夹东西。 要么它会监视的变化与否。 希望这可以帮助。 干杯。