Điều này đã có một vài xoắn và biến. Tôi đã sửa đổi câu trả lời này để cập nhật với ASP.NET Core 2.0 (kể từ ngày 26/02/2018).
Điều này chủ yếu được lấy từ các tài liệu chính thức :
Để làm việc với các cài đặt trong ứng dụng ASP.NET của bạn, bạn chỉ nên khởi tạo một Configuration
trong Startup
lớp của ứng dụng . Sau đó, sử dụng mẫu Tùy chọn để truy cập các cài đặt riêng lẻ. Giả sử chúng ta có một appsettings.json
tệp trông như thế này:
{
"MyConfig": {
"ApplicationName": "MyApp",
"Version": "1.0.0"
}
}
Và chúng ta có một đối tượng POCO đại diện cho cấu hình:
public class MyConfig
{
public string ApplicationName { get; set; }
public int Version { get; set; }
}
Bây giờ chúng tôi xây dựng cấu hình trong Startup.cs
:
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
}
Lưu ý rằng appsettings.json
sẽ được đăng ký theo mặc định trong .NET Core 2.0. Chúng tôi cũng có thể đăng ký mộtappsettings.{Environment}.json
tệp cấu hình cho mỗi môi trường nếu cần.
Nếu chúng tôi muốn đưa cấu hình của mình vào bộ điều khiển, chúng tôi sẽ cần phải đăng ký nó với thời gian chạy. Chúng tôi làm như vậy thông qua Startup.ConfigureServices
:
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<MyConfig>(Configuration.GetSection("MyConfig"));
}
Và chúng tôi tiêm nó như thế này:
public class HomeController : Controller
{
private readonly IOptions<MyConfig> config;
public HomeController(IOptions<MyConfig> config)
{
this.config = config;
}
// GET: /<controller>/
public IActionResult Index() => View(config.Value);
}
Cả Startup
lớp
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
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<MyConfig>(Configuration.GetSection("MyConfig"));
}
}