![](/img/trans.png)
[英]ASP.NET Core 2.1 - Options pattern - accessing options doesn't return instance of the bound class
[英]Accessing configuration options in ASP.NET Core: options pattern
我有一個ASP.NET Core應用程序。 我嘗試使用選項模式,但它似乎不起作用。
我有以下appsettings.json
:
{
"ConnectionStrings": {
"MyTablesConnectionString": "Default[...];EndpointSuffix=core.windows.net"
},
"Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }
}
以下ConnectionStrings
類
public class ConnectionStrings {
public ConnectionStrings() {
MyTablesConnectionString = "default value";
}
public string MyTablesConnectionString { get; set; }
}
這是我的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, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
// HERE IS THE GOOD VALUE !!!!!!!!
Debug.WriteLine($"Connection string is:{Configuration["ConnectionStrings:MyTablesConnectionString"]}");
}
public void ConfigureServices(IServiceCollection services)
{
// Adds services required for using options.
services.AddOptions();
// Register the IConfiguration instance which "ConnectionStrings" binds against.
services.Configure<ConnectionStrings>(Configuration);
// Add framework services.
services.AddMvc();
}
但是,在具有以下控制器的開發機上使用時
private readonly ConnectionStrings azureConnectionString;
public HelloWorldController(IOptions<ConnectionStrings> optionsAccessor)
{
// HERE IS THE "DEFAULT" VALUE ?!!!!!!!!
azureConnectionString = optionsAccessor.Value;
}
我看到使用的是“默認值”,而不是json文件中的值(無效的值)。 我想念什么嗎?
您需要綁定ConnectionStrings部分,如下所示:
services.Configure<ConnectionStrings>(Configuration.GetSection("ConnectionStrings"));
目前,由於綁定了根,因此期望從類中找到屬性“ ConnectionStrings”或“ Logging”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.