我正在尝试在我的 config.json 文件中访问值,但是它在我的控制器中返回null值,以及在 startup.cs中进行测试时。
在startup.cs
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("config.json", optional: true, reloadOnChange: true)
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
/*...
...*/
services.AddOptions();
services.Configure<AppSettings>(Configuration.GetSection("MicrosoftAzureStorage"));
在控制器中
public class TestController : Controller
{
private string _token;
public IActionResult Index()
{
return View();
}
public TestController(IOptions<AppSettings>settings)
{
_token = settings.Value.token; //returns Null
}
AppSettings.cs
public class AppSettings
{
public string ApplicationName { get; set; }
}
config.json
{
"MicrosoftAzureStorage":
{
"AzureStorageConnectionString": "RandomConnectionString"
}
}
您正在添加jsonfiles而不知道它们确实存在。
.AddJsonFile("config.json", optional: true, reloadOnChange: true)
如果您更改可选:真实为false,则可能会得到异常。由于我缺少一条信息,因此请在项目中发布。json我无法确定。查看PublishOptions,您可能必须添加AppSettings.json:
"publishOptions": {
"include": [
"wwwroot",
"appsettings.json",
"web.config"
]
},
属性名称必须匹配JSON文件中的密钥名称。请参阅此处的类似示例:将加载配置添加到ASP.NET Core
我在应用程序中一直使用的代码片段。
在startup.cs
中 public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("secondary.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
在控制器方法或辅助类中。
var builder = new ConfigurationBuilder();
builder.AddJsonFile(Directory.GetCurrentDirectory() + "/secondary.json");
var configuration = builder.Build();
var myValue = configuration["MicrosoftAzureStorage:AzureStorageConnectionString"];