Невозможно прочитать значение ключа свойства из репозитория GIT с помощью служб сервера конфигурации в Steeltoe - PullRequest
0 голосов
/ 22 января 2019

Я не могу прочитать значение свойства из git in steeltoe для приложения dot net core 2.1.

Из моего клиентского приложения я хочу прочитать файл свойств, который присутствует в репозитории Git для различных файлов свойств среды, таких как foo-development.properties/foo-Production.properties, в зависимости от среды приложения.

Найдите мой код ниже для чтения данных

Program.cs:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
      WebHost.CreateDefaultBuilder(args)
    .UseCloudFoundryHosting(5000)
    .ConfigureAppConfiguration(b => b.AddConfigServer(new LoggerFactory().AddConsole(LogLevel.Trace)))
    .AddCloudFoundry()   
    .UseUnityServiceProvider()
    .UseStartup<Startup>();

Стартовая страница

public void ConfigureServices(IServiceCollection services)
    {
        services.AddOptions();
        services.ConfigureConfigServerClientOptions(Configuration);
        services.AddConfiguration(Configuration);
        services.ConfigureCloudFoundryOptions(Configuration);           

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        services.AddCors();
        services.AddDiscoveryClient(Configuration);

        //The following setting is tp read config values from json to class
        services.Configure<ConfigSettings>(Configuration.GetSection("ConfigSettings"));

        // Adds the configuration data POCO configured with data returned from the Spring Cloud Config Server
        services.Configure<ConfigServerData>(Configuration);

        services.AddScoped<ApiExceptionFilter>();
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info { Title = "Alcatraz AddUrlLink Service", Version = "v1" });
        });
    }

Страница контроллера

public class HomeController
{
    private IOptionsSnapshot<ConfigServerData> IConfigServerData { get; set; }
    private CloudFoundryServicesOptions CloudFoundryServices { get; set; }
    private CloudFoundryApplicationOptions CloudFoundryApplication { get; set; }
    private IConfigurationRoot Config { get; set; }
    public HomeController(IOptionsSnapshot<ConfigServerData> configServerData, IConfigurationRoot config,
        IOptions<CloudFoundryApplicationOptions> appOptions,
        IOptions<CloudFoundryServicesOptions> servOptions)
    {
        if (configServerData != null)
            IConfigServerData = configServerData;

        // The ASP.NET DI mechanism injects these as well, see
        // public void ConfigureServices(IServiceCollection services) in Startup class
        if (servOptions != null)
            CloudFoundryServices = servOptions.Value;
        if (appOptions != null)
            CloudFoundryApplication = appOptions.Value;

        _service = service;
        Config = config;
        CreateConfigServerDataViewData();
    }

    private void CreateConfigServerDataViewData()
    {
        Console.WriteLine("Started...");
        // IConfigServerData property is set to a IOptionsSnapshot<ConfigServerData> that has been
        // initialized with the configuration data returned from the Spring Cloud Config Server
        if (IConfigServerData != null && IConfigServerData.Value != null)
        {
            try
            {
                if (IConfigServerData != null)
                {
                    Console.WriteLine("Not Null" + IConfigServerData.ToString());
                }
            }
            catch(System.Exception ex) { }

            var data = IConfigServerData.Value; 

            if (IConfigServerData.Value != null)
            {

                Console.WriteLine("Propertis " + data);
                Console.WriteLine("Propertis " + data.foo);
            }
            Console.WriteLine("foo1 " + Config["Foo"]);
            Console.WriteLine("foo2 " + Config["foo"]);
        }
        else
        {
            Console.WriteLine("There is no Properties Files available");
        }

    }
}

Файлы классов

public class ConfigServerData
{
    public string Bar { get; set; }
    public string foo { get; set; }

    // Optional data from vault
    public string Vault { get; set; }
}

Файлы myclient.properties & myclient-development.properties в репозитории Git

foo: Test

Я зафиксировал эти файлы в определенном URL git. но я не могу получить свойство сообщения в моем клиентском приложении.

Пожалуйста, помогите мне в этом. Спасибо заранее.

1 Ответ

0 голосов
/ 25 января 2019

Spring Cloud Config Server на PCF требует авторизации взаимодействия.В версии 2.1 Steeltoe эта авторизация не выполняется в Steeltoe.Extensions.ConfigServer *, но выполняется в Pivotal.Extensions.ConfigServer *

Для вашей ссылки ConfigServer NuGet и оператора using в program.cs,измените "Steeltoe" на "Pivotal", и у вас все будет готово.

С этим изменением вы также можете удалить .AddCloudFoundry на WebHostBuilder, поскольку Pivotal-версия поставщика конфигурации Cloud Foundry добавит это для вас.

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