Leggere il file di configurazione in Asp.NET Core e C#
Ho creato un progetto per fare dei test su Asp.NET Core.
E ho visto che hanno finalmente levato il Web.config per qualcosa di più moderno: appsettings.json!
Oggi vediamo come leggere il file da un controller usando C#; avendo creato un progetto Asp.NET Core MVC, non ho dovuto modificare ne il Program.cs ne lo Startup.cs.
Cominciamo dal file JSON:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"ZaraConn": "Server=IP;Database=DB;user id=USER;password=PWD"
},
"MySettings": {
"token": "MY_TOKEN"
}
}
Ho aggiunto il ConnectionStrings e il MySettings.
Adesso dentro il nostro controller:
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using CSharpNetCoreWeb.Models;
using Microsoft.Extensions.Configuration;
namespace CSharpNetCoreWeb.Controllers
{
public class HomeController : Controller
{
private IConfiguration configuration { get; }
public HomeController(IConfiguration configuration)
{
string connectionString = configuration.GetConnectionString("ZaraConn");
Debug.WriteLine("DB CONN: " + connectionString);
string token = configuration.GetSection("MySettings").GetSection("token").Value;
Debug.WriteLine("TOKEN: " + token);
}
public IActionResult Index()
{
return View();
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}
La cosa fondamentale, sulla quale ci ho sbattuto la testa, è passare IConfiguration nel costruttore (dependency injection).
Sotto vi ho postato due esempi di lettura del file:
- nel primo usiamo la "scorciatoia" GetConnectionString, che va appunto a cercare il parametro ConnectionStrings
- nel secondo andiamo a leggere le sezioni messe per la nostra configurazione personale
Enjoy!
c# aspnet core json iconfiguration getconnectionstring
Commentami!