Solución:
En primer lugar, el
"Data": {
"ConnectionStrings": {
"DefaultConnection": "Data Source=server;Initial Catalog=dbase;Trusted_Connection=True;MultipleActiveResultSets=true"},
}
Es ligeramente diferente de la estructura que obtiene cuando agrega un “Archivo de configuración Asp.NET” en Visual Studio. Cuando haces eso, obtienes
"ConnectionStrings": {
"DefaultConnection": "Data Source=server;Initial Catalog=dbase;Trusted_Connection=True;MultipleActiveResultSets=true"},
sin el objeto JavaScript “Datos”. Por eso el método de extensión no funciona. Espera esta estructura. Puede usar esta estructura (la que tiene “Datos”) de todos modos y obtener su cadena de conexión así:
var connectionString = Configuration["Data:ConnectionStrings:DefaultConnection"];
Observe que está navegando por el árbol de objetos de JavaScript usando :
en lugar de .
. Eso se debe a algunos problemas multiplataforma con el uso de .
.
Si edita los “Datos”: {} puede hacer esto:
var connectionString = Configuration["ConnectionStrings:DefaultConnection"];
Ahora el método de extensión funcionará. Debajo de las extensiones de Microsoft, es lo mismo que el código anterior.
var config2 = Configuration.GetConnectionString("DefaultConnection");
Me faltaba la letra ‘s’ después de la ConnectionString
nombre de propiedad en appsettings.json cuando se usa Configuration.GetConnectionString("name")
Si quieres copiar
"ConnectionStrings ": {
"SpyStore": "Server=(localdb)\mssqllocaldb;Database=SpyStore;Trusted_Connection=True;MultipleActiveResultSets=true;"
}
La redacción del método GetConnectionString
me confundí, lo pasé por encima y, oh, espera, estaba buscando ConnectionStrings
nombre de propiedad en lugar de Cadena de conexión
DefaultConnection
es el objeto interno en la estructura json y es el hijo de Data
objeto.
Entonces, si desea ser exacto con su archivo de configuración, puede usar
var connStr = Configuration.GetSection("Data")
.GetSection("DefaultConnection")["ConnectionString"];