ImageResizer рестартира набора от приложения

Имаме проблем, при който пуловете приложения се рестартират (и губят всички сесии) при изтриване на папка във виртуална директория. Това не е грешка на ImageResizers, а на ASP.NET. Не можем да копираме проблема на статичен уеб сайт.

Чудя се дали някой е решил този проблем? Обмисляме създаването на отделна уеб страница само за ImageResizer и графично съдържание. Може би има по-прост начин?

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


person Tony Gustafsson    schedule 05.03.2015    source източник


Отговори (2)


IIS и ASP.NET – и двете – имат независими FileSystemWatchers. Ако ги деактивирате, проблемът трябва да изчезне.

Вижте http://imageresizing.net/docs/howto/avoid-network-limit за повече информация.

Докато статията по-горе споменава проблема от гледна точка на латентно мрежово базирано хранилище, проблемът може да се появи по други начини - като например при изтриване на директория.

Също така предлагам да избягвате изтриването на папки на уебсайтове на ASP.NET; това е болезнена цел и вероятно ще се провали поради блокировки за четене. Браво, изтриването на папка рядко работи на Windows, дори когато не е част от уеб сайт, който се обслужва активно на клиенти.

person Lilith River    schedule 05.03.2015
comment
Благодаря за инфото! Да, в този случай изглежда проблемът е само програмата за наблюдение на файлове ASP.NET. Опитах се да променя FCNMode в системния регистър, както каза връзката. Когато го задам на 1, получих грешка: [NullReferenceException: Препратката към обект не е зададена към екземпляр на обект.] System.Object.GetType() +0 XXXX.Application_Start(Object sender, EventArgs e) +289 Когато задам на 2 няма промяна (това е само един процес вместо множество, ако го разбрах правилно). Опитах също да добавя ‹httpRuntime fcnMode=Disabled /› в web.config (ново от .NET 4.5), но със същия резултат. - person Tony Gustafsson; 06.03.2015
comment
Може би сте прав... просто не изглежда възможно да премахнете директории в IIS. Вероятно просто ще спрем да ги изтриваме и ще имаме задача за премахване, която изпълняваме ръчно, когато сървърите са извън клъстера. - person Tony Gustafsson; 06.03.2015
comment
Току-що опитах метода linkd/junction, описан тук и там в мрежата, но той не работи за изтрити папки. Опитах и ​​linkd.exe, и junction.exe (дори ако изглежда, че правят едно и също нещо) - person Tony Gustafsson; 06.03.2015
comment
Бихте ли отворили друг въпрос относно NullReferenceException? Това е нещо, което не съм виждал преди. - person Lilith River; 07.03.2015
comment
Сигурен! Ето го: stackoverflow.com/questions/28912932/ - person Tony Gustafsson; 07.03.2015
comment
Добре, сега опитах да деактивирам fcnMode и това не реши проблема ни. Непремахването на папките обаче изглежда е проработило :P Въпреки това не съм напълно доволен от тези решения - сега трябва да почистим директорията със скрипт на powershell и да сме сигурни, че сървърът, който е почистен, е извън клъстера. - person Tony Gustafsson; 11.03.2015
comment
Вече мога да потвърдя, че сайтът спря да се рестартира, когато спряхме да изтриваме папки. Предполагам, че трябва да свикнем с някои празни папки и да ги изтрием с powershell, когато са извън клъстера. - person Tony Gustafsson; 19.03.2015

Изглежда е възможно да се използва IIS приложение вместо виртуална директория и да се използва различен набор от приложения за архива на изображения. Опитах и ​​проблемът беше решен... този appool се рестартира вместо това, което не се отрази на уеб пула. Голям успех!

Не мисля обаче, че и това ще правим. Изглежда, че IIS приложението се нуждае от собствена папка bin. Трябваше да копирам DLL файловете за преоразмеряване на изображения тук. Също така трябваше да напиша друг global.asax за автоматични 404 изображения в Application_Start. Работи... Просто не искам директорията с изображения да има много код в нея. Синхронизира се от трета страна.

person Tony Gustafsson    schedule 19.03.2015