Разная строка подключения для каждого профиля публикации в VS2010.
-
28-09-2019 - |
Вопрос
Можно ли изменить строку подключения (или просто хост сервера) в зависимости от выбранного профиля веб-публикации?Возможно, используя Преобразование Web.config или как-то еще?
Я имею в виду, что для профиля «Тест» измените строку подключения «MyConnString» (в опубликованном Web.config) на "Data Source='example.com,14333;..."
а для профиля "Производство" - "Data Source=./SQLExpress;..."
Решение
Именно для этого и были созданы преобразования веб-конфигурации.По ссылке, которую вы предоставили в своем сообщении, есть пошаговое руководство, как сделать это специально для строк подключения.
Чтобы начать преобразования, щелкните правой кнопкой мыши файл 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» в любую конфигурацию, в которой вы находитесь при публикации.