[英]C#: modify web.config at runtime
我的<appSettings>
部分中有一個條目,其中包含我的連接字符串。 默認情況下,它會在C:
驅動器的根目錄中查找文件。
<appSettings>
<add key="EnvironmentFile" value="C:\environment.extension" />
</appSettings>
我需要以編程方式修改條目的值,因為應用程序將部署到不同的服務器 (Appharbor),我無法訪問 C 驅動器。 我將環境文件移動到應用程序目錄的根目錄,這意味着我需要修改 EnvironmentFile 的 appSettings 值。 這是我到目前為止所嘗試的,因為我無法在 web.config 上放置相對值,所以我采用了以下方法,例如
value="~/environment.extension"
Default.aspx
:
protected void Page_Load(object sender, EventArgs e)
{
if(ConfigurationManager.AppSettings["EnvironmentFile"] == null)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
config.AppSettings.Settings.Add("EnvironmentFile", AppDomain.CurrentDomain.BaseDirectory + @"environment.extension");
config.Save(ConfigurationSaveMode.Minimal);
ConfigurationManager.RefreshSection("appSettings");
}
if (IsPostBack == false)
{
//--some business logic here that gets data from the database
}
}
在調試模式下,它確實修改了我的web.config
但拋出了一個異常,因為它已經在我的 if 塊上執行代碼。 是否有其他方法可以做到這一點,以便我對調試和發布有不同的配置?
是的,還有另一種方法可以做到這一點。
如果您在 Visual Studio 中右鍵單擊您的Web.Config
,您將看到“添加配置轉換”選項。 這允許您為各種配置創建轉換。 新添加的Web.XXX.config files
將包含一些關於如何轉換條目的示例,但一個簡單的示例是:
在您的基本 Web.Config 中:
<appSettings>
<add key="Mode" value="Development" />
</appSettings>
然后在 WebConfig.LiveRelease.config 文件中,你可能有這個:
<appSettings>
<add key="Mode" value="Live" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.