Замена Web.config, отсутствующий раздел

#asp.net

#asp.net

Вопрос:

Я потратил целый день на эту «простую» проблему…

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

 appSettings=ConfigAppSettings.Production.config;
  

Это работает отлично. Результирующий (развернутый) файл Web.config был правильно преобразован и теперь содержит производственные настройки, которые я сказал ему использовать.

Но, пытаясь сделать то же самое с пользовательским разделом «spring», используя точно такой же метод

 spring=ConfigSpring.Production.config;
  

…Я получаю…

web.config(1): ошибка WDP00002: отсутствует раздел spring

Раздел spring находится точно на том же уровне, что и элемент AppSettings, поэтому я не знаю, почему он не работает.

Есть множество других людей с такой же проблемой, но я не могу найти удовлетворительных ответов.

Ответ №1:

Правильный синтаксис для ссылки на внешний файл выглядит следующим образом:

 <spring configSource="ConfigSpring.Production.config" />
  

file="ConfigAppSettings.Production.config" Синтаксис, который работает с appSettings разделом, не будет работать с пользовательскими разделами, насколько я помню, поскольку они не реализуют такое свойство.

Комментарии:

1. Привет, спасибо за совет. Я задавался вопросом об использовании свойства configSource, но разве это не жесткий код рабочей версии в моем файле (я совсем новичок в этом)? Как я могу указать на другой файл для моей среды тестирования (configSource=ConfigSpring.Test.config)? Спасибо

2. Извините, не уверен, что вы имеете в виду .. в любом случае, без указания configSource атрибута он будет выглядеть в существующем корневом web.config файле как обычно. И да, вы можете указать его на разные файлы при тестировании и производстве.

3. Я думаю, к чему я клоню, имея другой файл для каждой конфигурации, т.е. Web.Production.config указывает на один файл, а Web.Test.config указывает на другой (или я предполагаю, что значения могут быть в этих файлах напрямую без атрибута configSource. Просто пытаюсь сейчас … еще раз спасибо

4. Хммм, я создал файл Web.Production.config с другим элементом <spring> в нем, и когда я публикую свой файл в VS2010, опубликованная версия файла была правильно объединена, т. Е. У меня есть один web.config, но теперь он содержит производственные настройки, которые я хочу для <весна>. Однако я не могу заставить проекты веб-развертывания уважать файл Web.Production.config, что немного обидно. Есть ли способ сделать это?

5. PS Я думаю, вы правы, функция замены не работает в пользовательских разделах конфигурации из-за каких-то ограничений со сборщиком, ей нужно найти DLL обработчика, что немного бесполезно, поскольку я просто хочу, чтобы он заменил текст