如何读取web.config文件中的appSettings部分?

107

我的 XML 文件长成这样,文件名是 web.config

<?xml version="1.0"?>
<configuration>
  <appSettings>   
    <add key="configFile" value="IIS.config"/>
    <add key="RialtoDomain" value="ASNC_AUDITORS"/>    
  </appSettings>
  <system.serviceModel>
    ....
  </system.serviceModel>
</configuration>

在代码中当我这样读取时

String path = ConfigurationSettings.AppSettings["configFile"];

我得到了一个 null 值。没有抛出异常。这是正确的做法吗?


您也可以直接从.aspx页面读取web.config appSettings的值。https://dev59.com/pW855IYBdhLWcg3wxHYq - Matthew Lock
6个回答

168

由于你正在访问一个 web.config 文件,你应该使用

using System.Web.Configuration;

WebConfigurationManager.AppSettings["configFile"]

我已经在IIS上部署了一个.NET 6 WebAPI。我应该使用app settings文件还是web config文件来进行设置? - variable

33

添加命名空间

using System.Configuration;

在原有的

ConfigurationSettings.AppSettings

代码中,你应该使用

ConfigurationManager.AppSettings

String path = ConfigurationManager.AppSettings["configFile"];

7

我检查过了,但仍然得到了空值。我检查了键的拼写和其他所有内容。 - realn

4

您需要添加System.configuration DLL作为引用,并使用System.Configuration.ConfigurationManager.AppSettings["configFile"].ToString

不要忘记在开头添加using语句。希望这能有所帮助。


0
    using System.Configuration;

    /// <summary>
    /// For read one setting
    /// </summary>
    /// <param name="key">Key correspondent a your setting</param>
    /// <returns>Return the String contains the value to setting</returns>
    public string ReadSetting(string key)
    {
        var appSettings = ConfigurationManager.AppSettings;
        return appSettings[key] ?? string.Empty;
    }

    /// <summary>
    /// Read all settings for output Dictionary<string,string> 
    /// </summary>        
    /// <returns>Return the Dictionary<string,string> contains all settings</returns>
    public Dictionary<string, string> ReadAllSettings()
    {
        var result = new Dictionary<string, string>();
        foreach (var key in ConfigurationManager.AppSettings.AllKeys)
            result.Add(key, ConfigurationManager.AppSettings[key]);
        return result;
    }

0

这是在您的C#项目中随时访问web.config设置的简单方法。

 Properties.Settings.Default

使用案例:

litBodyText.Text = Properties.Settings.Default.BodyText;
litFootText.Text = Properties.Settings.Default.FooterText;
litHeadText.Text = Properties.Settings.Default.HeaderText;

Web.config文件:

  <applicationSettings>
    <myWebSite.Properties.Settings> 
      <setting name="BodyText" serializeAs="String">
        <value>
          &lt;h1&gt;Hello World&lt;/h1&gt;
          &lt;p&gt;
      Ipsum Lorem
          &lt;/p&gt;
        </value>
      </setting>
      <setting name="HeaderText" serializeAs="String">
      My header text
        <value />
      </setting>
      <setting name="FooterText" serializeAs="String">
      My footer text
        <value />
      </setting>
    </myWebSite.Properties.Settings>
  </applicationSettings>

不需要特殊的程序 - 一切都已经在那里了。我很惊讶没有人知道从web.config文件中读取设置的最佳方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接