2011-02-10 11 views
3

我是一個從事ASP.NET Web應用程序工作的10人團隊的成員,但卻是衛星辦公室中唯一的開發人員(位於不同於主辦公室的域)。在Web.config中,我需要對Web應用程序進行更改,以使其可以在我的特定域上工作(對<identity>元素和數據庫連接字符串的更改),這與我的團隊使用的其他人不同。如何輕鬆地對源代碼管理下的本地Web.config進行特定更改

我無法更改原始的Web.config文件,因爲那樣會弄亂我團隊中的其他人。 MsBuild Web.config轉換看起來很有前途,但只有在部署Web應用程序(我只是將IIS指向我的應用程序的根目錄)時纔有效。我探討了手動運行<TransformXml>構建步驟,但它不會覆蓋我的本地Web.config文件(訪問被拒絕錯誤)

我能做些什麼來輕鬆地對本地Web.config文件進行一些選擇性更改,而無需修改源代碼管理中的內容?

回答

0

我不知道任何解決方案不會修改源代碼管理中的內容。但在這裏,你可以考慮可能在你的情況下工作的一些選項:

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 managing multiple web.config files

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> 
1

最常見的部分需要局部變化是的ConnectionStringsappSettings。對於這兩個部分,.NET框架允許將其存儲在單獨的文件中。你可以簡單地把這些單獨的文件放在源代碼管理之外(忽略,取一次然後隱藏,禁用文件上的版本控制......你使用的任何風格源代碼控制)。

例如,

<configuration> 
    <connectionStrings configSource="connections.config"/> 
</configuration> 


<connectionStrings> 
    <add name="Name" 
    providerName="System.Data.ProviderName" 
    connectionString="My;Personal;Connection;String;" /> 
</connectionStrings> 
+0

什麼過程模擬的元素? (這些東西只能在Web.config中進行) – Mike

相關問題