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. 良好的編程習慣
把經常修改的目錄移到外面去,並做一個頁面用於下載該文件夾下的文件,可以提高安全性。
例如管理信息系統的“用戶目錄”等。這個方法的優點是,可以避免不必要的資源泄露。