Разная строка подключения для каждого профиля публикации в 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" в любую конфигурацию, в которой вы находитесь при публикации.

Другие вопросы по тегам