Ser*_*rge 2 c# configuration .net-core asp.net-core
我有一个ASP.NET核心应用程序.我尝试使用选项模式,但它似乎不起作用.
我有以下内容appsettings.json:
{
"ConnectionStrings": {
"MyTablesConnectionString": "Default[...];EndpointSuffix=core.windows.net"
},
"Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }
}
Run Code Online (Sandbox Code Playgroud)
以下ConnectionStrings课程
public class ConnectionStrings {
public ConnectionStrings() {
MyTablesConnectionString = "default value";
}
public string MyTablesConnectionString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的 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();
}
Run Code Online (Sandbox Code Playgroud)
但是,在使用以下控制器的开发机器上使用它时
private readonly ConnectionStrings azureConnectionString;
public HelloWorldController(IOptions<ConnectionStrings> optionsAccessor)
{
// HERE IS THE "DEFAULT" VALUE ?!!!!!!!!
azureConnectionString = optionsAccessor.Value;
}
Run Code Online (Sandbox Code Playgroud)
我看到使用"默认值"而不是json文件中的值(无效值).我错过了什么吗?
您需要绑定ConnectionStrings部分,如下所示:
services.Configure<ConnectionStrings>(Configuration.GetSection("ConnectionStrings"));
Run Code Online (Sandbox Code Playgroud)
目前,它希望从您的类中找到属性"ConnectionStrings"或"Logging",因为您绑定了根.
| 归档时间: |
|
| 查看次数: |
1417 次 |
| 最近记录: |