Как отключить перезапуск приложения после удаления каталога в ASP.NET 4?
После удаления каталога в asp.net приложение перезапустится, и я потеряю весь сеанс, и кэш очистится. Поэтому я нашел следующее решение; Я положил следующий код в Application_Start
из 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[] { });
1 ответ
Вы не можете предотвратить повторное использование пула приложений, и в любом случае это неправильный способ достижения цели.
Вместо этого вы не должны удалять какие-либо файлы или каталоги в каталоге вашего приложения. Для временных данных вы должны использовать временный каталог, для постоянных данных вы должны хранить его в отдельном месте.
Также, если вы заботитесь о том, чтобы ваши сеансы и кеш сохранялись после перезагрузки пула приложений, вам следует дополнительно сохранить их в постоянном хранилище данных и перезагрузить его.