Bunun birkaç dönüşü oldu. Bu yanıtı ASP.NET Core 2.0 (26/02/2018 itibariyle) ile güncel olacak şekilde değiştirdim .
Bu çoğunlukla resmi belgelerden alınır :
ASP.NET uygulamanızdaki ayarlarla çalışmak için, yalnızca Configuration
uygulamanızın Startup
sınıfında bir örnek oluşturmanız önerilir . Ardından, tek tek ayarlara erişmek için Seçenekler desenini kullanın. Diyelim appsettings.json
ki şöyle bir dosya var:
{
"MyConfig": {
"ApplicationName": "MyApp",
"Version": "1.0.0"
}
}
Ve yapılandırmayı temsil eden bir POCO nesnemiz var:
public class MyConfig
{
public string ApplicationName { get; set; }
public int Version { get; set; }
}
Şimdi yapılandırmayı şu şekilde oluşturuyoruz 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();
}
}
.NET Core 2.0'da varsayılanappsettings.json
olarak kaydedileceğini unutmayın . appsettings.{Environment}.json
Gerekirse ortam başına bir yapılandırma dosyası da kaydedebiliriz .
Konfigürasyonumuzu kontrolörlerimize enjekte etmek istiyorsak, onu çalışma zamanına kaydetmemiz gerekecek. Bunu yoluyla yapıyoruzStartup.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"));
}
Ve bunu şu şekilde enjekte ediyoruz:
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);
}
Tüm Startup
sınıf:
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"));
}
}