настройка web.config на основе доменного имени - PullRequest
2 голосов
/ 13 марта 2012

Большинство моих веб-сайтов включают в себя одну LIVE (производственную) и две среды TEST, которые доступны через три разных доменных имени, например

www.mysite.com
test1.mysite.com
test2.mysite.com

Каждый из перечисленных выше - это веб-сайты IIS, которые указывают на один и тот же физический versioned папка, когда все они используют одну и ту же версию веб-сайта.

Что я обычно делаю при выпуске новой версии, это помещаю новую версию в новую физическую папку, например, / inetpub/ wwwroot / mywebsite / v41 / и укажите один из сайтов TEST на эту версию сайта и протестируйте ее.После прохождения LIVE (и других TEST) веб-сайтов также переназначаются на новую версию (например, v41).

Теперь моя проблема заключается в следующем.Каждый веб-сайт имеет свою собственную базу данных (у TEST есть копия LIVE, которую можно обновить с помощью пары команд SQL BACKUP / RESTORE), однако все три сайта «просматривают» один и тот же файл web.config и, следовательно, одно и то же соединение с базой данных.Строки (либо поставщик System.Data.SqlClient, либо поставщик System.Data.EntityClient).

Есть ли любой способ, которым я могу настроить web.config для предоставления других connectionStrings на основе доменного имени / веб-сайта IIS входящего запроса?

Может быть, тег или атрибут, который квалифицирует данный тег?

Я уже искал решение, но пока нетнашел один.Заранее спасибо, BloodBaz

Ответы [ 3 ]

1 голос
/ 13 марта 2012

есть два способа управления несколькими средами. Конкретный файл Web.config ....

  1. с использованием шаблона t4, ниже ссылка для этого http://ilearnable.net/2010/08/02/t4-for-complex-configuration/

  2. VS Configuration Manager и создание новых конфигураций сборки "LIVE", "test1", "test2" для вашего проекта, перейдите по ссылке

http://weblogs.asp.net/scottgu/archive/2007/09/21/tip-trick-automating-dev-qa-staging-and-production-web-config-settings-with-vs-2005.aspx

надеюсь, это поможет ..

0 голосов
/ 08 марта 2013

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

0 голосов
/ 13 марта 2012

почему бы не разбить ваш файл конфигурации, чтобы connectionStrings.config был его собственным файлом. Затем вы можете развернуть все и не перезаписывать этот файл connectionString.

где вы обычно помещаете строку подключения, сделайте это

<connectionStrings configSource="connectionStrings.config" />

Затем создайте файл с именем connectionString.config

<?xml version="1.0"?>
<connectionStrings>

</connectionStrings>

В качестве альтернативы вы можете создать другой вариант сборки, отличный от релиза / отладки. У вас могут быть преобразования web.config, которые выводят другой файл конфигурации в зависимости от того, какой из них выбран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...