Несколько разделов appSettings в web.config - PullRequest
0 голосов
/ 16 мая 2011

Возможно ли это в любом случае?Например, с помощью именованных разделов appSettings или appSettings, вложенных в другие именованные разделы.

Я хочу добиться чего-то вроде следующего:

<section name="development">
    <appSettings>
    </appSettings>
</section>

<section name="test">
    <appSettings>
    </appSettings>
</section>


string connectionString 
   = ConfigurationManager.GetSection("test").AppSettings["connectionString"];

Какой шаблон для этого?

Ответы [ 4 ]

5 голосов
/ 11 ноября 2011

Предполагая, что вы пытаетесь просто применить другую строку подключения (или манипулировать другими настройками web.config) при развертывании в других средах, вам нужно config transforms . Это самый быстрый, простой и правильный способ справиться с этой ситуацией.

3 голосов
/ 16 мая 2011

Элемент appSetting поддерживает атрибут «file», который позволяет указать имя файла, в котором можно разместить ключ / значения.

Это позволяет вам , а не делиться с командой значениями, указанными вами в user.config.

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

Дополнительная литература

1 голос
/ 16 мая 2011

То, что вы пытаетесь достичь, не будет работать таким образом. «Лучший» (IMHO) метод для этого - создать приложение из 3 файлов (или веб) .config dev.config и test.config (и, возможно, release.config). Затем в свойствах решения вы можете выполнить команду предварительной сборки, чтобы скопировать соответствующий файл .config, чтобы он стал «активным» на основе типа сборки, в app.config (или web.config).

Вы можете узнать больше об этом http://msdn.microsoft.com/en-us/library/aa983464%28v=vs.80%29.aspx и http://msdn.microsoft.com/en-us/library/ke5z92ks.aspx

Скотт Хансельман написал отличную статью об этом подходе: http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx

Так что вам нужно сделать это во время выполнения:

Если вы хотите получить другие настройки во время выполнения, то подход, который, вероятно, будет работать лучше всего, заключается в установлении соглашения об именах, например:

<appSettings>
   <add name="fearofawhackplanet.connectionString" value="your connection string" />
   <add name="cosCallis.connectionString" value="my connection string" />
</appSettings>

Я надеюсь, что оттуда вы можете увидеть, как управлять этим во время выполнения, чтобы получить ключ / значения, которые вам нужны.

0 голосов
/ 24 октября 2017

Я нашел пользовательские разделы наиболее гибкими для этого.См. «Элемент configSections (схема общих настроек)» в MSDN.

<sampleSection serverInstanceLabel1="alex" setting1="Value1"
               setting2="value two"/> 

Итак, в вашем случае вы можете иметь такие разделы, как: sampleSection, sampleSection1, ...

...