8

В настоящее время я могу легко настроить преобразование Web.config на основе конфигурации сборки, например. используйте connectionString=server;.. для Debug и connectionString=./SQLExpress;.. для Release.Можно ли связать преобразование Web.config с профилем публикации?

Но возможно ли преобразование Web.config на основе профиля публикации в Интернете? То есть используйте connectionString=server1;.. для профиля Server1 и connectionString=server2;.. для Server2?

ответ

0

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

Однако, если вы используете MSDeploy, есть способы изменить файл web.config. См. MSDeploy - Changing Connection string parameter after deploying the package для получения более подробной информации.

0

Для этого может быть несколько иной способ.

На ваших производственных серверах создайте фиктивную запись для customdb в файле c: \ windows \ system32 \ drivers \ etc \ hosts на каждой из производственных машин. Каждый из них указывает на базу данных, которую вы хотите использовать. Тогда вам нужно указать только на connectionString = customdb; для всех ваших производственных серверов.

Только недостатком этого было бы то, что вам понадобится доступ к файлу hosts, и для этого вам потребуется использовать db.

Надеется, что это помогает

+0

Интересно. Тем не менее, еще один недостаток заключается в том, что вы не можете (легко) управлять версиями файла hosts, так как он будет содержать параметры, зависящие от машины, и что он усложняет процесс развертывания, требуя доступа на запись к системным путям, которые вы обычно должны избегать. – Abel

5

Мы держим все машины/профиль определенной конфигурацию в отдельных файлах конфигурация, а затем использовать configSource, чтобы включить их, как так ...

<connectionStrings configSource="cstrings.config"/> 

Таким образом Web.config тот же и не требует каких-либо преобразований. Мы делаем это для строк подключения, настроек smtp и настроек приложения.

контроля Мы версия Web.config и «машина» конкретные файлы, такие как cstrings.config.production, cstrings.config.staging и т.д.

После того, как у вас есть эта структура легко генерировать изображения для различных профилей. У нас есть сценарии развертывания на каждой машине, которые читают переменную среды и развертываются соответствующим образом. Например, сценарий сборки промежуточного сервера копирует cstrings.config.staging в cstrings.config и т. Д.

+0

Как запустить сценарии развертывания для привязки текущего профиля и соответствующей строки подключения? – abatishchev

+0

@abatishcev: У нашего сервера сборки есть цели для тестирования, постановки и производства. Производится чистое оформление (фактический экспорт svn). Build scripts "переименовать $ {bin} /cstrings.config. $ {Destination} $ {bin} /cstrings.config", тогда мы запускаем модульные тесты, zip и ftp-развертывание на конечный компьютер. У каждого адресата есть файлы cstrings, smtp и appsettings в управлении версиями. например, cstrings.config.staging, smtp.config.staging, appsettings.config.staging. FYI: вы можете оставить cstrings.config на целевых компьютерах как файл только для чтения, если вы очень осведомлены о безопасности. Это не очень важно в нашей среде. – Rob

 Смежные вопросы

  • Нет связанных вопросов^_^