Домен приложения перезапускается при изменении файла .resx. Есть ли способ избежать этого? - PullRequest
3 голосов
/ 08 октября 2009

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

Мы бы хотели, чтобы эти файлы были доступны для редактирования на лету.

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

Есть ли способ разрешить редактирование этих файлов без перезапуска домена приложения?

Ответы [ 2 ]

7 голосов
/ 06 декабря 2009

Существует несколько разновидностей этого вопроса в Stackoverflow; повторить ответ, да, это определенно возможно.

Как и большая часть .NET, поставщики ресурсов являются расширяемыми.

Я бы сказал, что встроенные поставщики ресурсов (которые компилируют .resx в .resources) - неудачное несоответствие для веб-ориентированных развертываний.

Если ваши настройки в основном строковые, вы можете подключить простой UpdatableResXResourceProvider , который использует встроенный ResXResourceReader для чтения из существующих * .resx файлов.

Результаты кэшируются в кеше приложения.

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

Единственное предостережение в том, что если вы не хотите отключать встроенные FCN, вам необходимо переместить файлы * .resx в экранированную папку App_Data (обычно выполняется с шагом после сборки) ).

Вы можете скачать UpdatableResXResourceProvider здесь: http://www.onpreinit.com/2009/06/updatable-aspnet-resx-resource-provider.html

1 голос
/ 08 октября 2009

Это сообщение в блоге должно помочь вам. Я подозреваю, что это:

Количество перекомпиляций (aspx, ascx или asax) превышает предел определяется установка в machine.config или web.config (по умолчанию это установлено на 15)

...