Как демон linux будет читать xml файл в рабочем сервисе. Net Core 3.1 - PullRequest
0 голосов
/ 30 мая 2020

Я работаю с новым шаблоном проекта worker service в .Net Core. Чтение учетных данных из файла конфигурации. Расположение файла конфигурации на windows машине "D:/LC2/Files/Config.xml".

Когда я буду запускать worker service как linux daemon, как linux будет читать файл конфигурации? потому что доступен только windows путь к машине, а не linux.

Это мой код для чтения файла конфигурации

static List<intervalValue> GetConfig()
{
    XmlDocument doc = new XmlDocument();
    doc.Load("D:/LC2/Files/Config.xml");
    XmlNode node = doc.DocumentElement.SelectSingleNode("/parameters/intervalValue");
    {
        for (int i = 0; i < node.ChildNodes.Count; i++)
        {
            IntervalTypeList.Add(new intervalValue { Name = node.ChildNodes[i].Attributes["Name"].Value);
        }
    }
    return IntervalTypeList;
}

Как я могу исправить эту проблему?

1 Ответ

1 голос
/ 01 июня 2020

Вы правы, что демон Linux не сможет читать пути, которых нет на Linux.

Есть несколько подходов, на которые вы можете взглянуть:

  1. Ваши службы могут посмотреть на ОС и прочитать другой путь / файл на Linux. Например, для Windows вы читаете жестко запрограммированное местоположение @'D:\LC2\Files\Config.xml', а для Linux вы можете использовать другое жестко запрограммированное, например /opt/LC2/config.xml.

  2. Вы может предоставить аргумент рабочей службе. Это требует синтаксического анализа аргументов и обучения вашей рабочей службе аргументу, например --config /path/to/file. Тогда ваша рабочая служба просто прочитает этот переданный путь и не будет беспокоиться о пути. Независимо от того, что запускает / настраивает ваш сервис, он предоставит правильный путь для Windows и Linux.

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

Возможны другие варианты и варианты, но они кажутся наиболее подходящими. очевидные подходы.

В зависимости от аудитории программы вам могут понадобиться все три. Например, git будет использовать расположение по умолчанию для файла конфигурации. Но это позволит пользователям указывать определенные c значения конфигурации как через командную строку, так и указывать конфигурацию через переменные среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...