簡體   English   中英

C#:在運行時修改 web.config

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM