如何以编程方式读取 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 将重命名为:程序集的名称 + (.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 中找到一个示例