Удаление каталога приводит к перезапуску приложения - PullRequest
4 голосов
/ 02 февраля 2009

У меня есть приложение с 2 каталогами (книги и экспорт). Если мы создаем книгу или страницу книги в приложении, добавляется каталог с идентификатором страницы (это для загрузки ресурсов). Если мы удаляем страницу, страница (и ее каталог) удаляется из базы данных и файловой системы.

Однако это привело к потере сеанса (даже перезапуску приложения). Я посмотрел кое-что на Google и нашел следующую ссылку . Кажется, проблема в ASP.NET 2.0 (и 3.5). У кого-нибудь есть решение этой проблемы.

Сейчас мы думаем о создании службы, которая будет очищать каталоги ночью. Но должно быть другое решение для этого нет? Да, и размещение каталога вне виртуального каталога не вариант.

Ответы [ 5 ]

6 голосов
/ 02 февраля 2009

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

5 голосов
/ 02 февраля 2009

Ох и выложить каталог за пределы виртуальный каталог не является опция.

Размещение каталога вне виртуального каталога - единственное решение, которое я нашел (пока). Что вы можете сделать, это создать ссылку (соединение) в файловой системе так, чтобы каталог находился внутри виртуального каталога, например:

  • Наш веб-сайт (виртуальный каталог) находится по адресу C: \ projectX \ website
  • каталог данных (где мы создаем / удаляем файлы и папки) находится в C: \ projectX \ data
  • затем мы создаем ссылку, которая делает папку данных доступной как C: \ projectX \ website \ data

Ссылка создается с помощью программы Linkd.exe (доступной в наборе ресурсов Windows) со следующей командой:

linkd c:\projectX\website\data c:\projectX\data

Теперь c: \ projectX \ website \ data - это ссылка / соединение, которое указывает на каталог реальных данных. Вы можете работать со ссылкой, как если бы это был физический каталог.

например. на вашем веб-сайте вы можете получить к нему доступ с помощью этого кода:

Server.MapPath("~/data")

Также вы можете использовать проводник Windows и перейти к C: \ projectX \ website \ data. Похоже, как настоящий каталог.

1 голос
/ 02 февраля 2009

Для хранения файлов данных, которые часто обновляются, создаются и удаляются, вам нужно использовать папку App_Data в корне веб-сайта. Состояния MSDN для папки App_Data:

Содержит файлы данных приложения в том числе файлы MDF, файлы XML, а а также другие файлы хранилища данных. Папка App_Data используется ASP.NET 2.0 хранить приложение локально база данных, которая может быть использована для поддержание членства и роли информация.

Также проверьте раздел вопросов и ответов на предмет использования папки App_Data: Вопрос папки App_Data

1 голос
/ 02 февраля 2009

Похоже, что существует поддерживаемое исправление, которое достигает того же уровня, что и упомянутая в статье Sachin (отключение уведомлений об изменении файла на веб-сайте).

Проверьте эту статью в Microsoft KB для получения дополнительной информации.

Но так как вы упомянули в комментарии, что у вас нет доступа к серверу, я думаю, это также не поможет в вашем случае.

1 голос
/ 02 февраля 2009

У меня была такая же проблема. Решением является экстернализация обработки сеанса с помощью службы состояний ASP.Net. Единственным недостатком является то, что каждый объект, который вы помещаете в сеанс, должен быть сериализуемым, так как он передается службе состояний и обратно.

В настоящее время у меня нет возможности предоставлять дополнительные ссылки, но Google поможет вам, теперь, когда вы знаете, что искать.

...