2013-06-16 4 views
0

После удаления каталога в asp.net приложение перезапустится, и я потеряю всю свою сессию, и кеш очистится. Итак, я нашел следующее решение; Я поставлю следующий код в Application_Start из Global.asax, чтобы отключить отключение утилизации пула приложений, но иногда это не работает. Зачем?Как отключить перезапуск приложения после удаления каталога В ASP.NET 4?

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[] { }); 
+2

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

+0

Правильным решением является не удаление каталогов в корне приложения. –

+0

, но этот код часто работает правильно. – shiva

ответ

1

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

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

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