Я не знаю ни одного решения, которое бы не изменяло то, что находится в Source Control.Но вот некоторые варианты, которые вы можете рассмотреть, которые могут работать в вашей ситуации:
Global.asax
условные настройки:
void Session_Start(object sender, EventArgs e)
{
if (HttpContext.Current.Server.MachineName == "JOE" ){
//my development machine
Application["mysetting"] = "myspecial setting";
}else{
// ...
}
}
Несколько web.config
с
Иногда у вас разные web.config
s для разных серверов.Управление настройками в каждом из них может стать кошмаром, поэтому вопрос о переполнении стека (не могу найти его! Извините) предложил это, когда соответствующий web.config.<setting>
вставляется соответствующим образом в основной файл web.config
.
Application/
web.config.devserver
web.config.joebrown
web.config.production
Динамическое изменение настроек web.config
См. Сообщение о переполнении стека для получения более подробной информации: asp.net, управляющий несколькими файлами web.config
public static string GetConnString()
{
string connString = ConfigurationSettings.AppSettings[GetConfigKey("database")];
return connString;
}
public static string GetConfigKey(string baseKey)
{
string str = baseKey;
if (Dns.GetHostName().StartsWith("dinoch"))
{
str = str + "-dev";
}
else if (Dns.GetHostName().StartsWith("prodsrvr"))
{
str = str + "-prod";
}
return str;
}
<configuration>
<appSettings>
<add key="database-dev" value="server=(local)\vsdotnet;database=ASPXAPPS;Integrated Security=SSPI" />
<add key="database-prod" value="server=(local)\vsdotnet;database=ASPXAPPS;Integrated Security=SSPI" />
</appSettings>
</configuration>