2015-03-05 3 views
1

У нас возникла проблема, когда пулы приложений перезапускают (и теряют все сеансы) при удалении папки в виртуальном каталоге. Это не ошибка ImageResizers, а ASP.NET. Мы не можем воспроизвести проблему на статическом веб-сайте.ImageResizer перезапускает пул приложений

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

Это решение не работает для нас: http://www.aaronblake.co.uk/blog/2009/09/28/bug-fix-application-restarts-on-directory-delete-in-asp-net/

ответ

0

IIS и ASP.NET - оба - независимое FileSystemWatchers. Если вы отключите их, проблема должна исчезнуть.

Для получения дополнительной информации см. http://imageresizing.net/docs/howto/avoid-network-limit.

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

Я также предлагаю избегать удаления папок на веб-сайтах ASP.NET; это болезненная цель и, скорее всего, потерпит неудачу из-за чтения блокировок. Goodnes, удаление папки редко работает на окнах —, даже если это не часть веб-сайта, активно обслуживаемая клиентами.

+0

Благодарим за информацию! Да, в этом случае, похоже, это просто просмотрщик файлов ASP.NET. Я попытался изменить FCNMode в реестре по ссылке. Когда я установил его в 1, я получил ошибку: [NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта.] System.Object.GetType() +0 XXXX.Application_Start (отправитель объекта, EventArgs e) +289 Когда я устанавливаю его на 2, изменений нет (это просто один процесс вместо нескольких, если я его правильно понял). Я также попытался добавить в web.config (новый с .NET 4.5), но с тем же результатом. –

+0

Возможно, вы правы ... это просто не представляется возможным удалить каталоги в IIS. Мы, вероятно, просто прекратим их удаление, и у вас будет задание на удаление, которое мы выполним вручную, когда серверы покинут кластер. –

+0

Я просто попробовал метод linkd/junction, описанный здесь и там в Интернете, но он не работает для удаленных папок. Я попробовал как linkd.exe, так и junction.exe (даже если они, похоже, делают то же самое) –

0

Кажется, что можно использовать приложение IIS вместо виртуального каталога и использовать другой пул приложений для архива изображений. Я попытался, и проблема была решена ... это приложение вместо этого перезапустилось, что не повлияло на веб-пул. Большой успех!

Однако я не думаю, что мы это сделаем. Кажется, что приложение IIS нуждается в собственной папке bin. Мне пришлось копировать DLL-файлы для изображений. Мне также пришлось написать еще один файл global.asax для авто 404 изображений в Application_Start. Он работает ... Я просто не хочу, чтобы в каталоге изображений было много кода. Он синхронизирован с третьей стороной.

Смежные вопросы