0

asp.net でディレクトリを削除すると、アプリケーションが再起動し、すべてのセッションが失われ、キャッシュがクリアされます。そこで、次の解決策を見つけました。次のコードをApplication_Startofに追加してGlobal.asax、アプリケーション プールのリサイクルを無効にしましたが、うまくいかない場合があります。なんで?

System.Reflection.PropertyInfo p = typeof(HttpRuntime).GetProperty("FileChangesMonitor", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
        object o = p.GetValue(null, null);
        System.Reflection.FieldInfo f = o.GetType().GetField("_dirMonSubdirs", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.IgnoreCase);
        object monitor = f.GetValue(o);
        System.Reflection.MethodInfo m = monitor.GetType().GetMethod("StopMonitoring", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
        m.Invoke(monitor, new object[] { });
4

1 に答える 1

1

アプリケーション プールのリサイクルを防ぐことはできません。とにかく、そうするのは間違った方法です。

代わりに、アプリケーション ディレクトリ内のファイルやディレクトリを削除しないでください。一時データの場合は一時ディレクトリを使用し、永続データの場合は別の場所に保存する必要があります。

また、アプリケーション プールのリサイクル後にセッションとキャッシュを永続化する必要がある場合は、さらに永続的なデータ ストレージに保存して再読み込みする必要があります。

于 2013-06-16T05:23:54.763 に答える