Отладка / выпуск Web.Config
Я знаю, что web.config в Visual Studio 2010 обеспечивает возможность переключения из баз данных из режима отладки в режим выпуска.
Вот мой Web.Release.config:
Вот мой код Web.Debug.config:
- Как я могу использовать Web.debug.config на встроенном сервере отладки визуальной студии?
- Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере.
- Преобразование Web.config работает локально
- В чем разница между customErrors и httpErrors?
- Как увеличить тайм-аут запроса в IIS?
И это мой код Web.config:
Когда я публикую свой проект, в моем файле Web.config ничего не отображается. Не отображается ли строка подключения к Live Database?
- Указанный аргумент вышел за пределы допустимых значений. Имя параметра: сайт
- Ошибка HTTP 500.19 - Внутренняя ошибка сервера
- Как добавить амперсанд для значения в файле конфигурации приложения ASP.net/C#
- Шифрование Web.Config
- Ошибка входа для пользователя «NT AUTHORITY \ NETWORK SERVICE»
- ASP.NET web.config: атрибуты configSource и файлов
- Настройка нескольких параметров SMTP в web.config?
- Как настроить кеш статического содержимого для каждой папки и расширения в IIS7?
Преобразование web.config, которые являются частью Visual Studio 2010, использует XSLT для «преобразования» текущего файла web.config в его .Debug или .Release версию.
В ваших файлах .Debug / .Release вам нужно добавить следующий параметр в поля строки подключения:
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"
Это приведет к тому, что каждая строка строки соединения найдет соответствующее имя и соответствующим образом обновит атрибуты.
Примечание. Вам не придется беспокоиться об обновлении параметра providerName в файлах преобразования, поскольку они не меняются.
Вот пример из одного из моих приложений. Вот раздел файла web.config:
И вот раздел web.config.release, выполняющий правильное преобразование:
Одно добавленное примечание. Трансформирование происходит только при публикации сайта, а не при простое его с помощью F5 или CTRL + F5. Если вам нужно запустить обновление с заданным конфигом локально, вам придется вручную изменить файл Web.config для этого.
Для получения дополнительной информации вы можете увидеть документацию MSDN
https://msdn.microsoft.com/en-us/library/dd465326(VS.100).aspx
Возможно использование цели построения ConfigTransform в виде пакета Nuget – https://www.nuget.org/packages/CodeAssassin.ConfigTransform/
Все файлы преобразования «web. * .Config» будут преобразованы и выведены в виде серии файлов «web. *. Config.transformed» в каталоге вывода сборки независимо от выбранной конфигурации сборки.
То же самое относится к файлам преобразования «app. *. Config» в не-веб-проектах.
а затем добавив следующую цель в ваш *.csproj
.
Отправка ответа, поскольку это первый пост Stackoverflow, который появляется в Google по этому вопросу.
Чтобы преобразование работало в разработке (с использованием F5 или CTRL + F5), я отбрасываю ctt.exe ( https://ctt.codeplex.com/ ) в папке пакетов (packages \ ConfigTransform \ ctt.exe).
Затем я регистрирую событие pre-or post-build в Visual Studio …
$(SolutionDir)packages\ConfigTransform\ctt.exe source:"$(ProjectDir)connectionStrings.config" transform:"$(ProjectDir)connectionStrings.$(ConfigurationName).config" destination:"$(ProjectDir)connectionStrings.config" $(SolutionDir)packages\ConfigTransform\ctt.exe source:"$(ProjectDir)web.config" transform:"$(ProjectDir)web.$(ConfigurationName).config" destination:"$(ProjectDir)web.config"
Для преобразований я использую расширение SlowCheeta VS ( https://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5 ).
Если вы собираетесь заменить все строки подключения новостями для производственной среды, вы можете просто заменить все строки подключения на производственные, используя этот синтаксис:
....
Информация для этого ответа взята из этого ответа и этого сообщения в блоге .
Обратите внимание : как уже объясняли другие, этот параметр применяется только тогда, когда приложение не публикует при запуске / отладке (путем нажатия F5).