Можно ли связать преобразование Web.config с профилем публикации?
В настоящее время я могу легко настроить преобразование Web.config на основе конфигурации сборки, например, использовать connectionString=server;..
за Debug
а также connectionString=./SQLExpress;..
за Release
,
Но возможно ли выполнить какое-либо преобразование Web.config на основе профиля веб-публикации? Т.е. использовать connectionString=server1;..
для профиля Server1
а также connectionString=server2;..
за Server2
?
3 ответа
Мы сохраняем всю конфигурацию, относящуюся к машине / профилю, в отдельных конфигурационных файлах, а затем используем configSource для включения их следующим образом
<connectionStrings configSource="cstrings.config"/>
Таким образом, Web.config одинаков и не требует каких-либо преобразований. Мы делаем это для строк подключения, настроек smtp и настроек приложения.
Мы контролируем версии Web.config и "машинно-зависимые" файлы, такие как cstrings.config.production, cstrings.config.staging и т. Д.
Если у вас есть такая структура, вы можете легко создавать изображения для разных профилей. У нас есть сценарии развертывания на каждом компьютере, которые читают переменную среды и осуществляют соответствующее развертывание. Например, сценарий сборки промежуточного сервера копирует cstrings.config.staging в cstrings.config и т. Д.
Там может быть немного другой способ сделать это.
На ваших производственных серверах создайте фиктивную запись для customdb в файле c:\windows\system32\drivers\etc\hosts на каждом из рабочих компьютеров. Каждый указывает на базу данных, которую вы хотите использовать на этом компьютере. Тогда вам нужно только указать на connectionString=customdb; для всех ваших производственных серверов.
Единственным недостатком этого является то, что вам потребуется доступ к файлу hosts, и для этого потребуется использовать базу данных.
Надеюсь это поможет
Я считаю, что профили публикации не зависят от профилей сборки, что немного обидно, так как вы легко можете случайно развернуть конфигурацию отладки на своих производственных серверах.
Однако, если вы используете MSDeploy, есть способы изменить там файл web.config. См. MSDeploy - Изменение параметра строки подключения после развертывания пакета для получения дополнительной информации.