Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как добавить дополнительный конфиг файл ? / 11 сообщений из 11, страница 1 из 1
04.04.2014, 19:22
    #38605811
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
Привет.

Как сделать отдельный конфигурационный файл, кроме стандартного <AssemblyName>.exe.config ?

Нужно отделить специфические "админские" настройки (IP, WC Endpoints и пр) в отдельный файл от "пользовательских", касающихся работы приложения, которые более понятны простому пользователю и он может их для своих нужд изменять.

Чтобы было два конфиг-файла. Например с именами User.config и Admin.config.
В обоих, данные будут хранится в секции <appSettings>

Желания что-то скрыть от пользователя нет. Пусть открывает Admin.config сколько хочет.


Работа идет через методы ConfigurationManager.AppSettings[""]. Как-то можно задать имя файла ?

Visual Studio 2010.
...
Рейтинг: 0 / 0
04.04.2014, 20:10
    #38605836
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
NTierNoob,

можно без всяких ухищрений создать два файла конфигурации: machine config и app config. http://msdn.microsoft.com/ru-ru/library/1xtk877y.aspx Годится?
...
Рейтинг: 0 / 0
04.04.2014, 20:37
    #38605850
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
petalvik,

Насколько я понимаю, эти файлы лежат не рядом с EXE программы ? Тогда не подходит ))
Конфиг-файл в папке программы, это одно, а заставлять лезть куда-то в дебри, это сложнее для рядового, простого пользователя :)

Сейчас смотрю ConfigurationManager.OpenExeConfiguration. Может это подойдет.
...
Рейтинг: 0 / 0
04.04.2014, 20:49
    #38605854
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
NTierNoob,

рядовому пользователю по идее вообще запрещён доступ в Program Files. А доступ в папку Application Data, где будет расположен дополнительный конфиг приложения - разрешён.
...
Рейтинг: 0 / 0
04.04.2014, 20:53
    #38605856
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
NTierNoob,
авторкасающихся работы приложения, которые более понятны простому пользователю и он может их для своих нужд изменять. это как? в конфиге хранятся дефолтные настройки при развертывании, юзер там ничего не меняет, а меняет
программно через приложение, и даже если он изменит, в конфиге с екзешником нового значения не появится, а останется старое для другого юзера..
...
Рейтинг: 0 / 0
04.04.2014, 21:19
    #38605866
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
Программа выполняется в виде службы. Нету там никакого UI.

Поэтому редактируются настройки напрямую в файле.

Программа открывает 2 WCF сервиса, и в добавок 1 WCF клиент - по которому отсылает данные.
На все про все - системных, нужных параметров очень много выходит, которые загромождают файл. Ну вы сами понимаете

<configuration>
<system.serviceModel>
<!--diagnostics>
<behaviors>
<bindings>
<services>
<service
<service

<client>
</system.serviceModel>

Вот а потом идут уже пользовательские настройки
<appSettings>


Так вот - пользовательских настроек ОЧЕНЬ много. 25 или чуть больше.

Сервис обрабатывает запросы в виде XML, и по заданным в конфиге шаблонам, заменяет данные - после чего пересылает их в Client.

Собственно.
Есть желание вынести <appSettings> в отдельный файл. Просто для удобства чтения и редактирования. Чтобы пользователь видел нужные ему данные и сразу их редактировал.
PS. Не хочется писать какую-то отдельную программу именно для этой цели. Не так уж сложно открыть файл ручками и заменить что нужно.

Пользователь обучен тому, как редактировать шаблоны. Но его никак не касаются все те кучи настроек из serviceModel, и только мозолят глаза.

Подскажите пожалуйста как сделать, чтобы рядом с EXEшником службы лежало два файлика:
- Admin.config (меня абсотно устроит, если название будет стандартным - <AssemblyName>.exe.config)
- UserSettings.config.

В UserSettings.config будут лежать шаблоны для службы - которые пользователь редактирует.


Подскажите пожалуйста как это можно сделать ? Как потом обращаться ко второму конфиг-файлу ?

Хорошо бы ! Если бы обращение к обоим файлам было идентичным, например через ConfigurationManager.AppSettings[""].
Т.к. <appSettings> есть и в файле Admin.config (в описываемой терминологии) - хотелось бы, чтобы считывание appSettings из обоих файлов было идентичным, просто для простоты кода.. Глупо же, если к идентичным наборам данных обращение будет разным. не красиво как то.
...
Рейтинг: 0 / 0
04.04.2014, 21:28
    #38605870
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
Странно.
Вот такой код написал.

Код: c#
1.
2.
3.
4.
            System.Configuration.Configuration config =
              ConfigurationManager.OpenExeConfiguration(myPath);

            string test = config.AppSettings["ServiceName"];



Ругается
Ошибка 4 "System.Configuration.ConfigurationElement.this[System.Configuration.ConfigurationProperty]" недоступен из-за его уровня защиты

Думал нашел решение, но странная засада :(
...
Рейтинг: 0 / 0
04.04.2014, 21:38
    #38605874
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
Забавно. Яндекс выдал 4 ссылки на "недоступен из-за его уровня защиты" +Configuration.AppSettings
Решения, ни в одном нет. Этот вопрос является последним в теме :)

Подозреваю, что это мое сообщение тоже станет последним в теме, ввиду ошибки :) Похоже microsoft перегнул палку в этом месте.


Может какой-то другой путь есть, может я не то решение делаю вообще ?
...
Рейтинг: 0 / 0
04.04.2014, 21:50
    #38605878
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
NTierNoob,
ну а в гугле поискать ? -c# partial config files
...
Рейтинг: 0 / 0
04.04.2014, 21:52
    #38605881
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
Где-то в степи,

Как, вы догадываетесь, я не знал о "partial config files" :) Соответственно не мог составить такой запрос :)

Искал что знал - и не найдя задал вопрос на форуме.
Буду рыть в указанном направлении, спасибо
...
Рейтинг: 0 / 0
04.04.2014, 22:06
    #38605892
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить дополнительный конфиг файл ?
Друзья. Вопрос закрыт. Нашел решение.

Я все таки шел в верном направлении :)

Вот код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
                        
string ConfigPath = System.IO.Path.Combine( Environment.CurrentDirectory, "UserSettings.config");            
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = ConfigPath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration( configFileMap, ConfigurationUserLevel.None);

var someKeyValue = config.AppSettings.Settings["ServiceName"].Value;



UserSettings.config
Код: xml
1.
2.
3.
4.
5.
<configuration>
  <appSettings>
    <add key="ServiceName" value="HelloWorld"/>
    </appSettings>
  </configuration>



PS
config.AppSettings.Settings - работает
config.AppSettings - ругается на защиту
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как добавить дополнительный конфиг файл ? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]