|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Добрый день, Есть приложение на c#, которое поключается к базе, пишет в нее что-то из файла Excel и завершает работу. Оно должно работать в разный средах, например: разработка, тренинг и т.д. В начале оно предлагает выбрать юзеру среду или выбрать все, после чего подклюдчиться к выбранной среде или отработать в цикле по все средам. Я пытаюсь засунуть в App.config что-то вроде такого: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Ругается: The element 'appSettings' has invalid child element 'environments'. List of possible elements expected: 'add, remove, clear' Я так понимаю, оно ожидает что-то типа: Код: xml 1. 2. 3. 4.
Но это плоская структура и не позволяет мне получить что я хочу. Подскажите пжлста, как можно реализовать подход с несколькими средами и наборами конфигураций для них? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 04:09 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_m, Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 04:20 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Relic HunterRoust_m, Код: c# 1. 2. 3. 4. 5. 6.
Спасибо, но данный подход не позволяет дополнительных параметров, например: folder="c:\dev\" id="1" Ругается, что "The 'id' attribute not allowed" или "The 'folder' attribute not allowed" ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 04:35 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_m, Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 05:16 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Relic HunterRoust_m, Код: c# 1. 2. 3. 4. 5. 6.
Можно конечно и так, но немножко геморно, там помимо папки еще куча параметров и каждый вычленять при запросе несколько неудобно. Я уже начинаю склонятся к тому, чтобы загнать это все в базу и из базы запрашивать. А можно иметь несколько конфигурационных файлов? И их по циклу проходить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 06:30 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_mПодскажите пжлста, как можно реализовать подход с несколькими средами и наборами конфигураций для них? Стандартными средствами конфигурации в одном файле - никак. Пишите свою систему конфигурации/настроек. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 06:30 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныRoust_mПодскажите пжлста, как можно реализовать подход с несколькими средами и наборами конфигураций для них? Стандартными средствами конфигурации в одном файле - никак. Пишите свою систему конфигурации/настроек. А есть ли в сети какие-нибудь несложные примеры такой конфигурации? Я пытался использовать этот: https://www.jokecamp.com/blog/net-custom-configuration-section-collection-and-elements/?fbclid=IwAR0c1CQHSxat3H4NNw0LFGt6u9RQNB_IOGgAy1zavwu1_OGw6WjXFMIa0rQ Но когда я пример запихиваю в App.config, то система ругается. Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 06:48 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_mНо когда я пример запихиваю в App.config, то система ругается. Свою - это значит свою. Полностью. Без всяких app.config. Что там будет - XML, JSON, YAML, или БД - дело ваше. Это не такое уж трудное дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 07:41 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Хотя, если набор настроек для каждого варианта конфигурации одинаков, то можно сделать свою кастомную реализацию SettingsProvider, и внутри реализации в зависимости от выбранной конфигурации грузить нужные значения. Гуглить по фразе "C# custom SettingsProvider". Один из примеров . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 07:59 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныRoust_mНо когда я пример запихиваю в App.config, то система ругается. Свою - это значит свою. Полностью. Без всяких app.config. Зачем полностью, человк правильно пошёл в сторону своей секции в файле конфигурации. App.Config и Custom Configuration Sections https://docs.microsoft.com/ru-ru/dotnet/api/system.configuration.configurationsection?view=netframework-4.8 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 09:27 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныХотя, если набор настроек для каждого варианта конфигурации одинаков, то можно сделать свою кастомную реализацию SettingsProvider, и внутри реализации в зависимости от выбранной конфигурации грузить нужные значения. Гуглить по фразе "C# custom SettingsProvider". Один из примеров . Спасибо, попробую. Как вариант, я решил попробовать из локальной базы. Сначала засунул туда конфигурацию: Код: sql 1. 2. 3.
Создал процедуру: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Сделал класс для чтения параметров соединения: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
Вызываю его: Код: c# 1. 2. 3. 4. 5. 6. 7.
Все хорошо, пароли не в текстовом файле, сертификаты не на диске, единственное, о чем я не уверен, правильно ли я читаю сертификат: Код: c# 1. 2. 3.
Это файл, который мне надо будет передать в виде переменной. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 09:32 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_mНо когда я пример запихиваю в App.config, то система ругается. Не достаточно изменить только App.config, необходимо ещё и указанные в примере классы в своё решение добавить и собрать. И так, чтобы это попало в сборку MyConfiguration и пространство имён MyConfiguration. https://docs.microsoft.com/en-US/dotnet/framework/configure-apps/file-schema/section-element typeSpecifies the name of the configuration section handler class that reads the section from the configuration file. The type value has the syntax "fully-qualified-section-handler-class-name, simple-assembly-name". The simple assembly name is the root filename without the .dll file extension. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 09:33 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_mВсе хорошо, пароли не в текстовом файле, сертификаты не на диске Хм, вы там свой Vault изобретаете? Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API. https://www.vaultproject.io/ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 09:39 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Дмитрий МухRoust_mВсе хорошо, пароли не в текстовом файле, сертификаты не на диске Хм, вы там свой Vault изобретаете? Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API. https://www.vaultproject.io/ От вариантов глаза разбегаются. Тоже посмотрю, спасибо. Дело в том, что в базе мне несколько проще, я могу больше логики в базу положить и меньше мучиться с моими ограниченными знаниями c#. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 09:50 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныRoust_mПодскажите пжлста, как можно реализовать подход с несколькими средами и наборами конфигураций для них? Стандартными средствами конфигурации в одном файле - никак. Пишите свою систему конфигурации/настроек. Можно использовать несколько конфиг файлов, если нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 10:02 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_mДмитрий Мухпропущено... Хм, вы там свой Vault изобретаете? Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API. https://www.vaultproject.io/ От вариантов глаза разбегаются. Тоже посмотрю, спасибо. Дело в том, что в базе мне несколько проще, я могу больше логики в базу положить и меньше мучиться с моими ограниченными знаниями c#. Вам может и проще, а тем кто будет с этим потом работать? Вы можете толком описать задачу, что пытаетесь решить? ТЗ есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 10:36 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Ролг ХупинСон Веры Павловныпропущено... Стандартными средствами конфигурации в одном файле - никак. Пишите свою систему конфигурации/настроек. Можно использовать несколько конфиг файлов, если нужно Потенциально их может быть 50 и больше и их нужно обрабатывать в цикле. Я все больше склоняюсь к хранению конфигурации в базе. Можно иметь сколько угодно конфигураций и сред. Единственное, не уверен, как из базы читать сертификат. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 10:37 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_mЕсть приложение на c#, которое поключается к базе, пишет в нее что-то из файла Excel и завершает работу. Выглядит так, что вполне достаточно строки подключения к базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 10:39 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Roust_mРолг Хупинпропущено... Можно использовать несколько конфиг файлов, если нужно Потенциально их может быть 50 и больше и их нужно обрабатывать в цикле. Я все больше склоняюсь к хранению конфигурации в базе. Можно иметь сколько угодно конфигураций и сред. Единственное, не уверен, как из базы читать сертификат. Можно в базе, можно и в файле, можно и в отдельном сервисе... Зависит от задачи. Вам удобнее в базе - флаг вам в руки :) Как из базы читать сертификат? Зависит от того, как вы его туда загружаете и храните. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 10:42 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Дмитрий МухRoust_mпропущено... От вариантов глаза разбегаются. Тоже посмотрю, спасибо. Дело в том, что в базе мне несколько проще, я могу больше логики в базу положить и меньше мучиться с моими ограниченными знаниями c#. Вам может и проще, а тем кто будет с этим потом работать? Вы можете толком описать задачу, что пытаетесь решить? ТЗ есть? Задач на самом деле две. Одна, в которой есть около 40-ка (на данный момент, потом будет больше) компаний, у которых бухгалтерия на Xero. У Зеро есть API, который позволяет подключиться к системе используя пару ключей и сертификат. Нужно создать приложение, которое запускается раз в месяц по расписанию, обрабатывает в цикле все эти компании, подключаясь к каждой и экспортирует определенные данные либо в Эксель, либо сразу в базу. С экпортом и туда и туда я разобрался и написал работающие модули. Приложение на данный момент использует один конфигурационный файл, для одной компании. Вот параметры, которые нужны для подключения: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
Помимо них, нужны параметры для имени компании, папки (или базы/таблицы) куда складывать данные, даты, начиная с которой экпортировать данные. Этот список может расти. При этом дата, начиная с которой надо экспортировать, может меняться. Допустим в этом месяце им нужно экпортировать данные начиная с начала финансового года, а в другом месяце - абсолютно все. Помимо этого названия таблиц от этого могут меняться. Другая задача, нужно из базы вытащить схему таблиц в Экселе. Там заполнить вручную описание/предназначение каждого стоблца и таблицы и после этого запихать эти описания обратно в базу в виде extended properties. База может находиться в разных средах (разработка, тест, продакшн) а также могут быть разные базы. Нужно дать пользователю выбрать среду (или сказать что все) и имя базы. После чего приложение должно подключиться куда надо и сделать свое черное дело. С копированием схемы в Эксель и запихиванием описаний обратно я разобрался. Теперь нужно сделать конфигурацию на много баз и сред. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 03:29 |
|
Конфигурационный файл для нескольких баз
|
|||
---|---|---|---|
#18+
Дмитрий МухКак из базы читать сертификат? Зависит от того, как вы его туда загружаете и храните. Загружаю вот так: Код: sql 1. 2. 3.
Вот определение столбца, в котором сертификат: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 03:32 |
|
|
start [/forum/topic.php?fid=20&msg=39844396&tid=1398853]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 522ms |
0 / 0 |