SteelToe 无法从配置服务器访问数据
SteelToe not able to access data from config server
我已按照 SteelToe
文档从我的配置服务器访问配置数据。 https://steeltoe.io/docs/steeltoe-configuration/#2-2-5-access-configuration-data
在我的 TestController
中,我在构造函数中设置了配置全局变量。但是,当我检查变量 _config
时,它基本上没有值 null
值。
我不确定是否需要将值物理映射到 CustomConfig
class 属性?因为文档中没有指定。
Startup.cs
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
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
public class TestController : ControllerBase
{
private Startup.CustomConfig _config;
public TestController(IOptions<Startup.CustomConfig> configSettings)
{
_config = configSettings.value; // this is null
}
}
看来解决我的问题的唯一方法如下:
CustomConfig
class 扩展为具有构造函数,在该构造函数中,我从配置服务器
获取 uri
的值
public class CustomConfig
{
public string uri { get; set; }
public CustomConfig(IConfiguration configuration)
{
uri = configuration.GetValue<string>("spring:cloud:config:uri");
}
}
然后在我的控制器中,我在构造函数中调用 class,如下所示:
private Startup.CustomConfig _customConfig;
public TestController(Startup.CustomConfig customConfig)
{
_customConfig = customConfig;
}
当我检查 _customConfig
变量时,它包含我的 uri
值。
我不会将此标记为答案,会等待其他人的建议。
这里发生的几件事妨碍了您:
- 不要在 Startup 中构建配置,应该在 program.cs
中处理
- 属性 将配置绑定到自定义时名称需要匹配 类
- 应在
Configure
中配置选项
我已按照 SteelToe
文档从我的配置服务器访问配置数据。 https://steeltoe.io/docs/steeltoe-configuration/#2-2-5-access-configuration-data
在我的 TestController
中,我在构造函数中设置了配置全局变量。但是,当我检查变量 _config
时,它基本上没有值 null
值。
我不确定是否需要将值物理映射到 CustomConfig
class 属性?因为文档中没有指定。
Startup.cs
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
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
public class TestController : ControllerBase
{
private Startup.CustomConfig _config;
public TestController(IOptions<Startup.CustomConfig> configSettings)
{
_config = configSettings.value; // this is null
}
}
看来解决我的问题的唯一方法如下:
CustomConfig
class 扩展为具有构造函数,在该构造函数中,我从配置服务器
uri
的值
public class CustomConfig
{
public string uri { get; set; }
public CustomConfig(IConfiguration configuration)
{
uri = configuration.GetValue<string>("spring:cloud:config:uri");
}
}
然后在我的控制器中,我在构造函数中调用 class,如下所示:
private Startup.CustomConfig _customConfig;
public TestController(Startup.CustomConfig customConfig)
{
_customConfig = customConfig;
}
当我检查 _customConfig
变量时,它包含我的 uri
值。
我不会将此标记为答案,会等待其他人的建议。
这里发生的几件事妨碍了您:
- 不要在 Startup 中构建配置,应该在 program.cs 中处理
- 属性 将配置绑定到自定义时名称需要匹配 类
- 应在
Configure
中配置选项