Подстановка значений в web.config во время выполнения - PullRequest
0 голосов
/ 26 мая 2011

У нас есть приложение, которое работает в трех средах: разработка, контроль качества и производство.Приложение обращается к серверу SQL и нескольким веб-службам.Файл web.config содержит строку подключения для сервера SQL и IP-адреса веб-служб.Мы хотели бы иметь один файл web.config, который работает во всех трех средах, но каким-то образом собирает изменяющиеся данные для каждой среды.Кто-нибудь знает способ сделать это?

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Посмотрите на Преобразование Web.config .

0 голосов
/ 30 мая 2011

Мы используем те же параметры конфигурации, что и вы, и мы создали 3 строки подключения в нашем файле web.config следующим образом:

<connectionStrings>
    <add name="Dev" connectionString="Server=localhost;Database=WebDev;User=devo;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
    <add name="Stage" connectionString="Server=localhost;Database=WebStage;User=stago;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
    <add name="Live" connectionString="Server=localhost;Database=WebLive;User=livo;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
</connectionStrings>

Тогда у нас есть статический метод, который основывается на URL, чтобы определить, какой conn str использовать:

public static string ConnStr
{
    get
    {
        if (Config.WebRoot.StartsWith("http://www.")) { return ConfigurationManager.ConnectionStrings["Live"].ToString(); }
        else if (Config.WebRoot.StartsWith("http://stage.")) { return ConfigurationManager.ConnectionStrings["Stage"].ToString(); }
        else if (Config.WebRoot.StartsWith("http://localhost")) { return ConfigurationManager.ConnectionStrings["Dev"].ToString(); }
        else { return null; }
    }
}

Возможно, вам придется настроить метод, чтобы он работал для вас.

...