Как отключить перезапуск приложения после удаления каталога в 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 ответ

Вы не можете предотвратить повторное использование пула приложений, и в любом случае это неправильный способ достижения цели.

Вместо этого вы не должны удалять какие-либо файлы или каталоги в каталоге вашего приложения. Для временных данных вы должны использовать временный каталог, для постоянных данных вы должны хранить его в отдельном месте.

Также, если вы заботитесь о том, чтобы ваши сеансы и кеш сохранялись после перезагрузки пула приложений, вам следует дополнительно сохранить их в постоянном хранилище данных и перезагрузить его.

Другие вопросы по тегам