Сохранение содержимого ApplicationState в ASP.Net (MVC)

У меня есть внутреннее приложение, используемое для редактирования файлов XML на диске. Файлы XML загружаются в объектную модель, которая хранится в ApplicationState.

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

Вместо этого можно ли получать уведомления всякий раз, когда пользователь закрывает свой браузер, а также непосредственно перед выходом веб-сервера? Таким образом, данные будут сохраняться каждый раз, когда завершается сеанс, плюс когда компьютер выключается и т. Д. Я думал, что Application_End(), Application_Error() и Session_End() в Global.asax обеспечат это, но эти методы не кажется, называется.

1 ответ

Session_End должен быть вызван.

На какой версии IIS вы работаете или размещаетесь на сервере разработки Visual Studio?

Шаги, чтобы получить Session_End для запуска:

  1. Создать новый веб-сайт в VS 2008

  2. Отредактируйте web.config:

    добавлять <sessionState mode="InProc" cookieless="true" timeout="1"/> в <system.web>

  3. Добавьте файл Global.asax с кодом, показанным ниже.

    void Session_End(object sender, EventArgs e)

    {

    Console.WriteLine( "Session_End" );

    }

  4. Установите точку останова на Console.WriteLine вызов.

  5. Нажмите F5 и увидите загрузку страницы в IE или Firefox.

  6. Подождите 1 минуту или около того.

  7. Точка останова должна быть выделена красным цветом в IDE.

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