Search code examples
c#connection-stringasp.net-core-1.0

How to read connection string in .NET Core?


I want to read just a connection string from a configuration file and for this add a file with the name "appsettings.json" to my project and add this content on it:

{
"ConnectionStrings": {
  "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-

 WebApplica71d622;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
    "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
    "Default": "Debug",
    "System": "Information",
    "Microsoft": "Information"
   }
 }
}

On ASP.NET I used this:

 var temp=ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

Now how can I read "DefaultConnection" in C# and store it on a string variable in .NET Core?


Solution

  • You can do this with the GetConnectionString extension-method:

    string conString = Microsoft
       .Extensions
       .Configuration
       .ConfigurationExtensions
       .GetConnectionString(this.Configuration, "DefaultConnection");
    
    System.Console.WriteLine(conString);
    

    or with a structured-class for DI:

    public class SmtpConfig
    {
        public string Server { get; set; }
        public string User { get; set; }
        public string Pass { get; set; }
        public int Port { get; set; }
    }
    

    Startup:

    public IConfigurationRoot Configuration { get; }
    
    
    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // http://developer.telerik.com/featured/new-configuration-model-asp-net-core/
        // services.Configure<SmtpConfig>(Configuration.GetSection("Smtp"));
        Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure<SmtpConfig>(services, Configuration.GetSection("Smtp"));
    

    And then in the home-controller:

    public class HomeController : Controller
    {
    
        public SmtpConfig SmtpConfig { get; }
        public HomeController(Microsoft.Extensions.Options.IOptions<SmtpConfig> smtpConfig)
        {
            SmtpConfig = smtpConfig.Value;
        } //Action Controller
    
    
        public IActionResult Index()
        {
            System.Console.WriteLine(SmtpConfig);
            return View();
        }
    

    with this in appsettings.json:

    "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-WebApplica71d622;Trusted_Connection=True;MultipleActiveResultSets=true"
    },
    
    "Smtp": {
        "Server": "0.0.0.1",
        "User": "[email protected]",
        "Pass": "123456789",
        "Port": "25"
      }