【发布时间】:2012-09-03 08:40:20
【问题描述】:
修改、添加或删除应用程序已知文件夹中的某些类型的文件会导致应用程序重新启动。但是当更新应用程序中的日志文件时,为什么应用程序没有重新启动。 那么
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[] { });
通过这些更改,我可以创建/修改/删除文件夹,而不会导致应用程序重新启动。但是此代码适用于所有应用程序的已知文件夹。我想知道是针对一个文件夹而不会导致应用程序重新启动。
【问题讨论】:
-
如果日志文件不是应用程序安装的一部分,它不会导致应用程序重新启动。例如,如果应用程序通过 ILog 实现日志记录,由于日志文件是由应用程序创建的,而不是在安装过程中,并且对于应用程序的运行不是必需的,因此不会导致重新启动。
-
感谢您的解释。我还想知道一个文件夹的 System.Reflection.MethodInfo 的 StopMonitoring 而不会导致应用程序重新启动。
-
您使用的是 ASP.Net 2.0 吗?你的会话是 InProc 吗??
标签: c# asp.net global-asax