在應用程序的已知文件夾中修改,添加或刪除某些類型的文件將導致應用程序重新啓動。但是,當應用程序中的日誌文件更新時,爲什麼應用程序不重新啓動。 然後應用程序重新啓動以刪除,添加,更新文件夾
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實現日誌記錄,由於日誌文件是由應用程序創建的,而不是在安裝期間創建的,並且對於應用程序的運行不是必需的,所以不會導致重新啓動。 –
感謝您的解釋。我想知道一個文件夾的StopMonitoring System.Reflection.MethodInfo,而不會導致應用程序重新啓動。 – amm
你使用ASP.Net 2.0嗎?並且是你的會議InProc? –