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

时间:2016-02-18 16:13:36

标签: c# proxy app-config

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

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

将获得“192.168.130.5”,

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

更新:我将配置更改为以下内容并获取:

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

配置:

queryForList()

2 个答案:

答案 0 :(得分:0)

更新2:

您可以阅读描述here的值,但对于本地应用设置配置文件:

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

对于自定义栏目,您可以使用以下步骤:

您已定义从ConfigurationSection派生的自定义configsection类:

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

中找到示例

答案 1 :(得分:0)

过敏,您的app.config在构建和部署时将重命名为:程序集的名称+(。exe或.dll)+&#34; .config&#34;。上面的答案适用于Web应用程序,但不适用于控制台,库和Windows服务。您无法将app.config与任何程序集放在一起,并期望此程序集开始阅读appSettings部分,就像IIS读取web.config文件一样。我想这就是你收到null的原因。