Как обрабатывать временные файлы в приложении ASP.NET - PullRequest
4 голосов
/ 06 января 2010

Недавно я работал над отображением изображений диаграммы потока операций в нашем веб-приложении. Мне удалось использовать обновленный WF-дизайнер и создавать изображения на лету на сервере, но, представив, насколько большими могут быть диаграммы рабочего процесса, я хотел улучшить взаимодействие с пользователем, используя некоторый элемент управления ajax для отображения изображений, которые поддержка масштабирования и панорамирования.

Я случайно наткнулся на сайт seadragon , который, кажется, просто удивительная работа, которую я мог бы использовать. Есть только один недостаток - чтобы использовать их библиотеку для создания версий изображений с глубоким увеличением, мне нужно использовать файловую структуру на сервере. Из-за временного характера изображений, которые я использую (диаграммы рабочих процессов с индикаторами прогресса), важно не только иметь возможность создавать такие изображения, но и избавляться от них через некоторое время.

Теперь вопрос заключается в том, как лучше всего обеспечить, чтобы временные файлы изображений и иерархия папок могли быть созданы на сервере (веб-приложение ASP.NET), а затем очищены. Я думал об использовании функции кэширования и по истечении срока действия элемента кэша удалите соответствующую иерархию папок с изображениями или просто в Application_Start и Application_End из Global.asax удалите содержимое всей временной папки, но я не совсем уверен хорошая ли это идея и есть ли какие-то ограничения безопасности или проблемы, связанные с файловой системой. Что ты думаешь?

Ответы [ 3 ]

2 голосов
/ 06 января 2010

Мы делаем что-то похожее для создания отчетов в формате PDF, и нашли, что самый простой способ - использовать проверку метки времени, чтобы определить, сколько «старых» файлов, и затем удалить их на основе периода времени, в нашем случае более 2 часов. , Это делается до того, как будет создан следующий документ PDF, но как часть процесса создания. Мы также создали определенную папку и предоставили пользователю ASP.Net доступ на чтение и запись к папке.

Единственным недостатком является то, что если процесс создания PDF-файлов не используется регулярно, будет происходить сборка файлов, однако в конечном итоге они будут очищены. Через 2 года и около 4000 PDF у нас еще не было ошибки, делающей это таким образом.

1 голос
/ 06 января 2010

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

Application_Start и Application_End будут срабатывать только один раз каждый, поэтому, если вам нужна лучшая очистка, чем эта, я бы рассмотрел использование структуры кэша или простой службы Windows для выполнения очистки.

0 голосов
/ 06 января 2010

Во-первых, вы должны убедиться, что ваш рабочий процесс IIS имеет права на запись / удаление файлов из вашего каталога кэша (а НЕ на весь остальной сайт, на всякий случай)

Во-вторых, я бы держался подальше от использования App_Start и App_End. Конец приложения для очистки файлов не гарантирует 100% -ное срабатывание, и вы можете получить растущую кучу потерянных изображений.

Я бы вместо этого сделал запланированный процесс, возможно, запускаемый один раз в час или один раз в день, в зависимости от того, что вы хотите. И пусть он проверит, сколько лет каждому изображению в вашем кэше, и если оно старше вашего произвольного «времени истечения», то удалите его.

Кроме этого, тут не так много.

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