[英]Override ConnectionStrings in app.config (or web.config)
有沒有辦法覆蓋app.config中的ConnectionString。 我們的構建系統也在客戶的服務器上運行,但是connectionString需要不同。 因為app.config在svn中,每次我在app.config中更改內容並提交它時,我需要轉到客戶的服務器將connectionString更改回他們的數據庫...
例如,在ant-scripts中,這沒有問題,但在app.config中我似乎無法找到方法。 試過這個例子:
<connectionStrings configSource="WebConnectionString.config">
<add name="ConnectionString"
connectionString="..."
providerName="System.Data.SqlClient"/>
</connectionStrings>
我想要做的是,如果WebConnectionString.config存在,那么使用該配置文件中的connectionString。 如果沒有,請使用代碼示例中定義的那個(因此,在app.config中)。
WEB DELPOYMENT PROJECTS WOOHOO
什么方法可以節省自己的部署悲傷。 您可以做的一件非常美妙的事情就是為每位客戶提供Build配置。
然后,您還可以為每個包含連接字符串的客戶提供配置文件。 根據您選擇的構建配置,不同的連接字符串將粘貼到web.config中。 所以現在你可以為每個客戶建立一個“不同”的網站,這很容易。
想象一下名為config的文件夾和cust1ConnectionString.cfg,cust2等文件
現在您創建配置。 您已熟悉Release和Debug,創建cust1,cust2。
然后在Web部署項目中,有一個選項可以將Web配置的secions替換為另一個文件中的部分。
所以你去cust1部署並告訴它連接字符串在cust1connectionstrings.cfg文件中。 告訴它cust2在哪里等....
現在不再惹惱,每次為客戶構建網站時,所有設置都插入到web.config中,您只需移交正確配置的網站即可。 SVN中的內容並不重要,因為每個客戶都有自己的配置。 甜
您可以執行以下操作,創建一個用於封裝連接字符串檢索的類。
這樣的事情
public static class ConnectionStringBuilder
{
const string ConnStringDefault = @"defaultConnString";
static readonly string _connString = string.Empty;
public static string Build()
{
return _connString;
}
/// <summary>
/// Builds connection string from the config file with the given name
/// </summary>
/// <param name="name">The name.</param>
/// <returns></returns>
public static string Build(string name)
{
if (ConfigurationManager.ConnectionStrings[name] != null)
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
throw new ArgumentException("Connectionstring with given name '" + name +"' not found! ", "name");
}
/// <summary>
/// Initializes the <see cref="ConnectionStringBuilder"/> class.
/// </summary>
static ConnectionStringBuilder()
{
if (ConfigurationManager.ConnectionStrings["default"] != null)
{
log.Info("conn string in config found");
_connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
}
else
{
log.Info("no default connection string found, using test connection string");
_connString = ConnStringDefault;
}
}
}
用法就是這樣的
using(var conn = new SqlConnection(ConnectionStringBuilder.Build())
{
// do some stuff...
}
希望有所幫助
當我們進行構建時,我們將SVN配置替換為生產配置,我們也已經開始使連接字符串完全基於所有應用程序的Web服務,而不管狀態指向connection string
Web服務,該服務將正確的服務器拉下來。
一種方法是使用Web部署項目在構建時替換web.config中的connectionStrings部分。 您可以使用一個使用connstrs的調試模式,以及一個保持不變的發布模式。 一切都可以完全登記到svn。 您還可以使用WDP應用其他自定義的構建后步驟,這非常方便。
另一個選擇是將它們完全移動到appSettings中 - 但該文件只包含名稱/值對,因此需要更改代碼。
我會將連接字符串移動到machine.config。 這樣您就不必擔心更改任何內容,因為它們都是在服務器上存儲/管理的。 您現在可以無憂無慮地推送新版本,確保所有連接字符串保持與最初設置的相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.