首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SteelToe无法从配置服务器访问数据

SteelToe无法从配置服务器访问数据
EN

Stack Overflow用户
提问于 2019-07-08 16:16:06
回答 2查看 415关注 0票数 1

我有以下SteelToe文档,用于从配置服务器访问配置数据。https://steeltoe.io/docs/steeltoe-configuration/#2-2-5-access-configuration-data

在我的TestController中,我在构造函数中设置了配置全局变量。但是,当我检查变量_config时,它没有值,基本上是null值。

我不确定是否需要将值物理映射到CustomConfig类属性?因为这在文档中没有指定。

Startup.cs

代码语言:javascript
复制
public class CustomConfig { 
     public string Message { get; set; } 
}

public Startup(IConfiguration configuration, IHostingEnvironment env)
{

     var builder = new ConfigurationBuilder()
          .SetBasePath(env.ContentRootPath)
          .AddConfiguration(configuration)
          .AddCloudFoundry()
          .AddEnvironmentVariables();

     this.Configuration = builder.Build();
}

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
     services.Configure<CustomConfig>(Configuration.GetSection("spring:cloud:config:uri"));
}

Program.cs

代码语言:javascript
复制
public class Program
{
   public static void Main(string[] args)
   {
        CreateWebHostBuilder(args)
            .Build()
            .Run();
   }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .AddConfigServer()
            .UseStartup<Startup>();
    }
}

Controller.cs

代码语言:javascript
复制
public class TestController : ControllerBase
{
     private Startup.CustomConfig _config;     
     public TestController(IOptions<Startup.CustomConfig> configSettings)
     {
          _config = configSettings.value; // this is null
     }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-10 21:39:07

这里发生的几件事阻碍着你的前进:

  1. 不要在启动内部构建配置,这应该在program.cs中处理
  2. 当将配置绑定到自定义类时,属性名称需要匹配。
  3. 选项应在Configure中配置
票数 1
EN

Stack Overflow用户

发布于 2019-07-08 22:07:08

看来,解决我的问题的唯一办法如下:

CustomConfig类被扩展为有一个构造函数,在这个构造函数中,我从配置服务器获得uri的值。

代码语言:javascript
复制
public class CustomConfig
{
    public string uri { get; set; }

    public CustomConfig(IConfiguration configuration)
    {
        uri = configuration.GetValue<string>("spring:cloud:config:uri");
    }
}

然后,在我的Controller内部,我按如下方式调用构造函数中的类:

代码语言:javascript
复制
private Startup.CustomConfig _customConfig;

public TestController(Startup.CustomConfig customConfig)
{
    _customConfig = customConfig;
}

当我检查_customConfig变量时,它包含了我的uri值。

我不会将此作为回答,并将等待其他人的建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56938893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档