net defaultconnection connectionstrings connectionstring asp c# connection-string asp.net-core-1.0

defaultconnection - get connection string c# asp net core



¿Cómo leer la cadena de conexión en.NET Core? (6)

Quiero leer solo una cadena de conexión de un archivo de configuración y para esto agregar un archivo con el nombre "appsettings.json" a mi proyecto y agregar este contenido:

{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)//mssqllocaldb;Database=aspnet- WebApplica71d622;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } }

En ASP.NET usé esto:

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

Ahora, ¿cómo puedo leer "DefaultConnection" en C # y almacenarlo en una variable de cadena en .NET Core?


Consulte el enlace para obtener más información: https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings

JSON

{ "ConnectionStrings": { "BloggingDatabase": "Server=(localdb)//mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;" }, }

C # Startup.cs

public void ConfigureServices(IServiceCollection services) { services.AddDbContext<BloggingContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase"))); }


La forma en que encontré para resolver esto fue usar AddJsonFile en un generador en el Inicio (que le permite encontrar la configuración almacenada en el archivo appsettings.json) y luego usarla para establecer una variable privada _config

public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); _config = builder.Build(); }

Y luego podría establecer la cadena de configuración de la siguiente manera:

var connectionString = _config.GetConnectionString("DbContextSettings:ConnectionString");

Esto está en dotnet core 1.1


La respuesta publicada está bien, pero no respondió directamente la misma pregunta que tenía sobre leer en una cadena de conexión. A través de muchas búsquedas, encontré una forma un poco más simple de hacer esto.

En Startup.cs

public void ConfigureServices(IServiceCollection services) { ... // Add the whole configuration object here. services.AddSingleton<IConfiguration>(Configuration); }

En su controlador, agregue un campo para la configuración y un parámetro para él en un constructor

private readonly IConfiguration configuration; public HomeController(IConfiguration config) { configuration = config; }

Ahora más adelante en su código de vista puede acceder a él como:

connectionString = configuration.GetConnectionString("DefaultConnection");


Puede hacer esto con el método de extensión GetConnectionString:

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

o con una clase estructurada para DI:

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

Puesta en marcha:

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"));

Y luego en el controlador de inicio:

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(); }

con esto en 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" }



Tengo una biblioteca de acceso a datos que funciona con .net core y .net framework.

el truco estaba en los proyectos principales de .net para mantener las cadenas de conexión en un archivo xml llamado "app.config" (también para proyectos web) y marcarlo como ''copiar al directorio de salida'',

<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="conn1" connectionString="...." providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>

ConfigurationManager.ConnectionStrings: leerá la cadena de conexión.

var conn1 = ConfigurationManager.ConnectionStrings["conn1"].ConnectionString;