Разная строка подключения для каждого профиля публикации в VS2010
Можно ли изменить строку подключения (или просто хост сервера), полагаясь на выбранный профиль веб-публикации? Может быть, с помощью преобразования Web.config или как-то еще?
Я имею в виду для профиля "Тест" изменить строку подключения "MyConnString" (в опубликованном Web.config) на "Data Source='example.com,14333;..."
а для профиля "Продукция" - до "Data Source=./SQLExpress;..."
1 ответ
Это именно то, для чего были созданы преобразования веб-конфигурации. Ссылка, которую вы указали в своем сообщении, содержит пошаговое руководство по выполнению этой операции специально для строк подключения.
Чтобы начать с преобразований, щелкните правой кнопкой мыши файл web.config в проводнике проекта и выберите "Добавить преобразования конфигурации". Предполагая, что в конфигурации вашего решения есть ConfigA и ConfigB, будут добавлены два новых файла, Web.ConfigA.config и Web.ConfigB.config.
Если вы откроете эти новые файлы, они будут довольно пустыми, за исключением нескольких комментариев. Они на самом деле содержат пример строки подключения, которую вы можете использовать, хотя - это выглядит так:
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Раскомментируйте этот раздел и измените свойство name на имя строки подключения в базовом файле web.config. Установите для свойства connectionString фактическое значение, которое вы хотите использовать для ConfigA. Ну вот так:
<connectionStrings>
<add name="myConnectionString"
connectionString="Data Source=ConfigASqlServer;Initial Catalog=ConfigADatabase;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Повторите процесс для файла Web.ConfigB.config с требуемой строкой подключения для ConfigB.
Теперь, когда вы используете команду "Опубликовать" в Visual Studio, она автоматически преобразует базовый файл web.config и устанавливает атрибут "connectionString" в любую конфигурацию, в которой вы находитесь при публикации.