如何以编程方式读取 app.config 文件

本文关键字:app config 文件 读取 方式 编程 | 更新日期: 2023-09-27 18:35:11

我有我的应用程序的配置文件,我的app.config

如下所示
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"    />
  </configSections>
  <appSettings>
    <add key="log4net.Config" value="log4netConfig.xml" />
    <add key="proxyaddress" value="192.168.130.5"/>
  </appSettings>
  <system.net>
    <defaultProxy enabled ="true" useDefaultCredentials = "true">
        <proxy autoDetect="false"  
            bypassonlocal="true" 
            proxyaddress="192.168.130.6"
            scriptLocation="https://ws.mycompany.com/proxy.dat" 
            usesystemdefault="true" 
        />
    </defaultProxy>
  </system.net>
</configuration>
var proxy= ConfigurationManager.AppSettings["proxyaddress"]; 

将得到"192.168.130.5",

如何在 c# system.net 部分中获取所有代理设置?

更新:我将配置更改为以下内容并得到它:

string proxyURLAddr = ConfigurationManager.AppSettings["proxyaddress"];

配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>
  <appSettings>
    <add key="log4net.Config" value="log4netConfig.xml" />
    <add key="proxyaddress" value=""/>
  </appSettings>
  <system.net>
    <defaultProxy enabled ="true" useDefaultCredentials = "true">
      <proxy usesystemdefault ="True" bypassonlocal="False"/>
    </defaultProxy>
  </system.net>
</configuration>

如何以编程方式读取 app.config 文件

太敏感,构建和部署时,app.config 将重命名为:程序集的名称 + (.exe 或 .dll) + ".config"。上面的答案对 Web 应用程序有效,但对控制台应用程序、库和 Windows 服务无效。不能将 app.config 与任何程序集放在一起,并期望此程序集开始读取 appSettings 部分,就像 IIS 读取 web.config 文件一样。我认为这就是您收到空的原因。

更新 2:

您可以读取此处所述的值,但对于本地应用设置配置文件:

var proxy = System.Configuration.ConfigurationManager.GetSection("system.net/defaultProxy") as System.Net.Configuration.DefaultProxySection  
if (proxy != null) 
{ /* Check Values Here */ }

对于自定义部分,您可以使用以下步骤:

您已经定义了一个从 ConfigurationSection 派生的自定义配置节类:

public class ProxyConfiguration : ConfigurationSection
{
    private static readonly ProxyConfiguration Config = ConfigurationManager.GetSection("proxy") as ProxyConfiguration;
    public static ProxyConfiguration Instance
    {
        get
        {
            return Config;
        }
    }
    [ConfigurationProperty("autoDetect", IsRequired = true, DefaultValue = true)]
    public bool AutoDetect
    {
        get { return (bool)this["autoDetect"]; }
    }
  // all other properties
}

之后,您可以使用类实例访问值:

ProxyConfiguration.Instance.AutoDetect

您可以在 MSDN 中找到一个示例