2016-02-18 2 views
0

У меня есть конфигурационный файл для моего приложения, моя app.config, как показано нижеКак прочитать файл 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»,

Как получить все прокси настройки в разделе system.net в C#?

Обновлено: я изменил конфиг к следующему и получить его:

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

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=""/> 
    </appSettings> 
    <system.net> 
    <defaultProxy enabled ="true" useDefaultCredentials = "true"> 
     <proxy usesystemdefault ="True" bypassonlocal="False"/> 
    </defaultProxy> 
    </system.net> 
</configuration> 

ответ

0

Update 2:

Вы можете прочитать значения, как описанный here, но для конфигурационного файла настроек локального приложения:

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

Для пользовательских разделов вы можете использовать следующие шаги:

У вас есть определить пользовательский класс configsection, полученный из 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

+0

Спасибо. но ConfigurationManager.GetSection («прокси») имеет значение – toosensitive

+0

Вы пробовали первое предложение? – edesr

+0

var proxy = System.Web.Configuration.WebConfigurationManager.GetSection ("system.net/defaultProxy") как System.Net.Configuration.DefaultProxySection – edesr

0

toosensitive, ваш app.config, когда построен и развернут будет переименован: имя вашей сборки + (.exe или .dll) + «.config». Ответ выше действителен для веб-приложений, но не для консольных, библиотек и служб Windows. Вы не можете добавить app.config вместе с любой сборкой и ожидать, что эта сборка начнет чтение раздела appSettings, так же как IIS читает файлы web.config. Я думаю, именно поэтому вы получаете нуль.

Смежные вопросы