Отсутствуют пользовательские значения параметров раздела конфигурации после перезапуска узла Service Fabric

У нас есть 3-узловый локальный SF-кластер, работающий на виртуальных машинах Windows Server 2012 R2. Среди прочего, на каждом узле развернут экземпляр службы ASP.NET WebApi без сохранения состояния. Код запуска службы считывает строку подключения к БД из раздела пользовательских настроек, используя следующий код:

public static string GetLogDatabaseConnectionString(ServiceContext context)
{
  var configPackage = context.CodePackageActivationContext.GetConfigurationPackageObject("Config");

  const string RuntimeParametersSectionName = "Cop_RuntimeParameters";
  var configSection = configPackage.Settings.Sections.FirstOrDefault(s => s.Name == RuntimeParametersSectionName);
  if (configSection == null)
  {
    throw new InvalidOperationException($"Missing Settings.xml section {RuntimeParametersSectionName}.");
  }

  const string LogDatabaseConnectionStringParameterName = "Cop_LogDatabaseConnectionString";
  var logDatabaseConnectionStringConfigParameter = configSection.Parameters.FirstOrDefault(p => p.Name == LogDatabaseConnectionStringParameterName);
  if ((logDatabaseConnectionStringConfigParameter == null) || string.IsNullOrWhiteSpace(logDatabaseConnectionStringConfigParameter.Value))
  {
    throw new InvalidOperationException(
      $"Missing parameter {LogDatabaseConnectionStringParameterName} in Settings.xml section {RuntimeParametersSectionName}.");
  }

  return logDatabaseConnectionStringConfigParameter.Value;
}

Строка подключения настраивается в точности так, как описано в этом сообщении SO. Где вы устанавливаете параметры доступа и получаете доступ к ним для каждой среды для сервисной фабрики?,

Все работало нормально на пару дней. Вчера нам пришлось перезапустить один из узлов SF (VM2). После перезагрузки сервисный код запуска начал выкидывать второй InvalidOperationException исключение по поводу пропавших без вести Cop_LogDatabaseConnectionString параметр в конфигурации. Поскольку код вызывается из конструктора службы без обработки исключений, SF не может запустить службу. Переработка узла не помогла - единственным выходом было удаление и повторное развертывание типа службы и связанного с ней типа приложения.

Мой вопрос: какова вероятная причина того, что система конфигурации SF перестала возвращать значения, настроенные во время развертывания службы?

0 ответов

Другие вопросы по тегам