簡體   English   中英

讀取 appsettings.json - 字段保持為空

[英]Read appsettings.json - Fields remain null

認為我的 startup.cs 有問題,因為我沒有從<IOption> config獲得任何值

所以..我們有我們的appsettings.json

"Config": {
    "ApplicationName": "some name",
    "ConnectionString": "someconstring",
    "Version": "1.0.0"
  },

這里有我們的模型

public class Config
    {   
        public string ApplicationName { get; set; }
        public string ConnectionString { get; set; }
        public string Version { get; set; }
    }

啟動.cs

 public Startup(IConfiguration configuration)

    {
        Configuration = configuration;
    }



public static IConfiguration Configuration { get; set; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        // Add functionality to inject IOptions<T>
        services.AddOptions();

        // Add our Config object so it can be injected
        services.Configure<Config>(Configuration);
    }

然后在我們的控制器中,我嘗試加載這些數據,但不幸的是它們仍然是空的。

   private IOptions<Config> config;
            public CompaniesController(IOptions<Config> config)
            {
                this.config = config;
            }

我試圖用類似的東西來改變startup.cs

 services.Configure<Config>(options =>
            {
                options.ConnectionString = Configuration.GetSection("Config:ConnectionString").Value;
            });

但這似乎不起作用。

我一直在使用的資源

https://dzone.com/articles/dynamic-connection-string-in-net-core

https://stackoverflow.com/questions/31453495/how-to-read-appsettings-values-from-json-file-in-asp-net-core

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.2

但顯然我在這里錯過了一個關鍵點。

編輯:我正在使用 ASP.Net Core 2.0

在此處輸入圖片說明

編輯2:

程序.cs

public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }

整個Appsettings.json文件

{
  "Config": {
    "ApplicationName": "somename",
    "ConnectionString": "someconstring",
    "Version": "1.0.0"
  },
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}

編輯 3:在我的前端應用程序中,我像這樣導入 API。 在此處輸入圖片說明

services.Configure<Config>(Configuration);

此行未達到預期結果,因為您要查找的 JSON 屬性嵌套在appsettings.json文件中的Config屬性下。 像預期的那樣加載這些值,使用GetSection抓住Config部並傳遞Configure<TOptions>方法:

services.Configure<Config>(Configuration.GetSection("Config"));
     services.Configure<Config>(options =>
                {
                    options.ConnectionString = Configuration.GetValue<string>("Config:ConnectionString");
                    options.ApplicationName = "test";
                });

如果您想更詳細地配置您的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM