прочитать пользовательский файл конфигурации в asp.net

Как прочитать строки подключения из пользовательского файла конфигурации (скажем, abc.config) с помощью WebConfigurationManager из кода C# asp.net?

Configuration conf = WebConfigurationManager.OpenWebConfiguration("~/abc.config");

Это не работает.


person Sam    schedule 15.06.2012    source источник
comment
Что значит не работает? Вы получаете исключение? Он не загружен? Что такое бахвир?   -  person Jason De Oliveira    schedule 16.06.2012
comment
Проверьте свой config path должным образом. Это должно быть просто. Является ли объект conf нулевым?   -  person Angshuman Agarwal    schedule 16.06.2012
comment
Он читает некоторый SQLEXPRESS в качестве источника данных (другая строка подключения), а не из abc.config.   -  person Sam    schedule 16.06.2012
comment
SQLEXPRESS был 0-м элементом, строка подключения из abc.config была 1-м элементом.   -  person Sam    schedule 16.06.2012
comment
Что ты имеешь в виду ? Эта информация кажется не относящейся к вопросу. Не могли бы вы поделиться файлом? Вы говорите, что это пользовательская конфигурация, а не стандартный web.config файл.   -  person Angshuman Agarwal    schedule 16.06.2012
comment
Прости. Сначала я попробовал использовать настраиваемый файл конфигурации, как указано выше. Затем я создал каталог и переименовал конфигурацию в web.config, как упоминал Джейсон Де Оливейра (это работает). Но как я могу прочитать из пользовательского файла конфигурации?   -  person Sam    schedule 16.06.2012
comment
@Angshuman Agarwal, в abc.config есть строки подключения. Я прочитал connectionStrings из conf   -  person Sam    schedule 16.06.2012
comment
@Sam - Возможно, посмотрите на этот пост SO - stackoverflow.com/q/6341906/763026   -  person Angshuman Agarwal    schedule 16.06.2012


Ответы (2)


Я не думаю, что вы можете прочитать это с помощью webconfigurationmanager. вы будете читать как любой файл xml, так как это файл xml

public static string GetSingleValue(string strXPathExpression, string strAttributeName)
        {
            XmlNode node = GetNode(strXPathExpression);
            if (node != null)
            {
                XmlAttribute attribute = node.Attributes[strAttributeName];
                if (attribute != null)
                    return attribute.Value;
            }

            return string.Empty;


        }
person Raab    schedule 15.06.2012

вы можете использовать этот трюк: это мой собственный метод - использование webapp.config из корня веб-сайта. прочитать все настройки приложения и вернуться;

//Read WebAppConfiguration
public static AppSettingsSection ReadAllWebappConfig()
{
    string physicalWebAppPath = "";
    AppSettingsSection appSettings;

    ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
    physicalWebAppPath = System.Web.Hosting.HostingEnvironment.MapPath("~/webapp.config");

    if (System.IO.File.Exists(physicalWebAppPath))
    {
        fileMap.ExeConfigFilename = physicalWebAppPath;
        Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
        appSettings = (AppSettingsSection)config.GetSection("appSettings");
    }
    else
        appSettings = null;

    return appSettings;
}

пример webapp.config:

<configuration>
  <appSettings>
    <add key="WebApp-FixedTopMenu" value="true"/>
    <add key="WebApp-FixedTopMenuThickness" value="true"/>
  </appSettings>
</configuration>
person mRizvandi    schedule 17.10.2013
comment
Что делать, если у меня нет узла appSettings? - person Shesha; 21.09.2016
comment
Все XML нуждаются в корневом элементе и элементе, это стандартный XML. Вам нужен корень (конфигурация) и элемент элемента (appSettings) и ваши желаемые свойства (например, «WebApp-FixedTopMenu»). - person mRizvandi; 11.10.2016