關於File Change Notification (FCNs)

1. “File Change Notifications(FCNs)”

      用來監視Web站點目錄下的文件結構或內容“是否被大量改變”。如果站點被改變,則自動重啓站點。這個特性主要考慮到,ASP.NET會緩存很多資源,而如果沒有監控目錄的變動的話,那麼有些已刪除的資源就有可能仍然被使用着,造成其它不必要的資源泄露。

     可能出現的問題: 刪除或重命名站點下的任意目錄或XML文件會導致丟失Session

     ASP.NET 2.0 SP2,提供禁用FCNs功能

     三種途徑解決:

     a. 修改註冊表

         HKLM\Software\Microsoft\ASP.NET下添加一個名爲:FCNMode的DWORD值

         值爲1:應用程序將禁用FCNs。

         值爲2:應用程序將創建一個對象監視主目錄,應用程序用這個對象監視每個子目錄。

        最後,重啓IIS。

     b. 修改代碼

         在Global.asax(或其.cs文件)增加代碼如下,就可以關掉FCNs

         using System.Reflection;
         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[] { });

     c. 良好的編程習慣

         把經常修改的目錄移到外面去,並做一個頁面用於下載該文件夾下的文件,可以提高安全性。

         例如管理信息系統的“用戶目錄”等。這個方法的優點是,可以避免不必要的資源泄露。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章