2013-05-14 3 views
0

Я работаю над проектом ASP.NET, и мне нужно добавить некоторые параметры в разделе appSettings моего веб-приложения.Разделение раздела «appSettings» в нескольких файлах web.config

Теперь эти настройки растут, поэтому я хотел бы организовать их в разных файлах. Я создал другие файлы web.config в разных каталогах моего приложения, добавляя что-то вроде этого:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    </system.web> 
    <appSettings> 
    <add key="settingKey" value="settingValue" /> 
    </appSettings> 
</configuration> 

Но когда я пытаюсь получить доступ к ним через ConfigurationManager.AppSettings["settingKey"], я получаю null.

Итак, можно ли разделить настройки в разных файлах? Есть ли другой способ логически упорядочить значения параметров приложения?

+0

Проверьте это: http://stackoverflow.com/questions/11363121/connectionstring-management-for-many-projects-on-one-server-should-i-make-my-ow/11363291#11363291 –

ответ

0

Вы сможете увидеть только параметры web.config в каталоге, если текущий путь находится в этом каталоге.

Так, например: /MyDirectory/web.config

видим только если вы загружаете страницу как: /Mydirectory/MyTestPage.aspx

Вы не видели бы настройки web.config вот к примеру: /OtherDirectory/MyTestPage.aspx

Это сообщение может помочь: Creating a custom .config file in asp.net

0

Я знаю это, я s слишком старый и, вероятно, даже не относится к .NET Core, а для тех, кто приходит из Google и использует файлы конфигурации .NET .NET. Вот что я обычно делаю ...

Я использую configSources, чтобы выполнить все настройки конфигурации из web.config. Это позволяет конкретной конфигурации раздела в другой файл, обеспечивая относительное местоположение, например, вот как вы бы объявить в разделе конфигурации в configSource (в корневом файле web.config) ...

<configuration> 

    <log4net configSource="Config\debug\log4net.config" /> 
    <appSettings configSource="config\debug\settings.config" /> 
    <connectionStrings configSource="config\debug\connections.config" />  
    ...  
</configuration> 

Вы можете назовите эти файлы так, как вы хотите, просто убедитесь, что указанный путь и файлы существуют в решении. Вот что файл settings.config выглядит ...

<?xml version="1.0"?> 
<appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    <add key="foo" value="bar" /> 
</appSettings> 

Теперь относительный путь относительно корня проекта ...

enter image description here

На картинке выше вы можете видеть, что я предоставили два разных пути для разных сред развертывания, потому что, очевидно, мои строки и настройки для конвейера различны в производстве.

Затем вы можете использовать преобразование конфигурации, так что приложение может использовать правильные конфигурационные файлы, будь то в отладочной или выпуске режиме ...

enter image description here

Это то, что файл Web.Debug.config выглядит .. .

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <log4net configSource="Config\debug\log4net.config" xdt:Transform="Replace" /> 
    <appSettings configSource="config\debug\settings.config" xdt:Transform="Replace" /> 
    <connectionStrings configSource="config\debug\connections.config" xdt:Transform="Replace" /> 
</configuration> 

Релиз один почти такой же ...замените пути, предоставленные атрибутам configSource. И это в значительной степени. Существуют и другие элементы web.config, которые поддерживают настройки configSource, такие как многие из дочерних элементов system.serviceModel.

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