Плагин для изменения настроек других плагинов, через браузер, через меню - доступа нет.
В сервисном хосте, изменить настройки — достаточно проблематично, для этого надо либо перезапускать сервис, либо менять настройки в источнике настроек и реализовывать события обратного оповещения после изменения настроек в источнике данных.
Либо, использовать плагин изменения настроек через браузер. Плагин поднимает HTTP сервер на указанном порту и старается через JSON отобразить список плагинов, их настроек и значений настроек.
Самая главная проблема, при развёртывании сервиса и указания одного TCP порта для настроек, что инстансов одного хоста, но с разным массивом плагинов — может быть много, поэтому плагин занимает не только TCP порт сервера, но и поднимает IPC хост. Поэтому, в случае если TCP порт занят, новый инстанс пытается подключиться к существующему IPC хосту и в случае неудачи, вываливается с ошибкой, что порт занят. Если к IPC хосту удалось подключиться успешно, то дочерний плагин сообщает хосту свой ID'шник (в первой версии используется ProcessId) и при обращении через браузер, у администратора появляется возможность выбрать процесс и списко загруженных плагинов.
Далее идёт проблема с закрытием главного хоста, который освобождает порт и закрывает IPC хост. Все процессы подключенные через IPC, начинают пинговать друг друга с определённой периодичностью и в случае закрытия IPC хоста, один из дочерних процессов пытается занять TCP порт и сам открывает IPC хост, к которому снова пытаются подключиться отключённые дочерние процессы.
При успешном запуске хоста, в логах появляются следующие сообщения:
Started at Url: http://127.0.0.1:8180/ net.pipe://serverName/Plugin.ConfigurationHttp-1634336167/Control/Host
В случае с подключением к запущенному IPC хосту, в дочернем процессе появится следующее сообщение:
Started at Url: net.pipe://serverName/Plugin.ConfigurationHttp-970326027/Control/17392/Plugins
А в ранее запущенном IPC хосте будет следующее сообщение:
IPC service connected -> ProcessId: 17,392 Address: net.pipe://serverName/Plugin.ConfigurationHttp-970326027/Control/17392/Plugins Count: 4
На Windows 10 так же может потребоваться зарезервировать TCP порт под приложение, используя комманду netsh, так что в случае получения ошибки "Access is denied" при попытки открыть TCP порт, в лог будет записано следующее сообщение:
You have to reserve host with netsh command or run application in [Administrator] mode.
И будет выброшено исключение, которое в данных будет содержать строку вида:
String.Format("netsh http add urlacl url={0} user={1}\\{2}\"", this._hostUrl, Environment.UserDomainName, Environment.UserName);
AuthenticationScheme
: Anonymous — Авторизация с использованием определённой схемы.Realm
: — ?UnsafeConnectionNtlmAuthentication
: False — ?Users
: — Массив аккаунтов, совместно с доменом используемых для входа при Basic авторизации. Формат: DOMAIN\LoginUnsafeConnectionNtlmAuthentication
: False — ?HostUrl
: http://{ipAddress}:8180/ — Хост, по адресу которого открываются настройки приложения. Константа {ipAddress}
— Используется для подставления глобального IP адреса машины.IgnoreWriteExceptions
: True — Получать ошибки на сервере, при отправки ответа на клиентListenersCount
: 1 — Кол-во потоков, которые обрабатывают запросы клиента