porta microsoft management azure-web-sites asp.net-core

azure web sites - microsoft - Acceder a las cadenas de conexión en ASP.NET 5 en Azure



porta azure (3)

Encontré la siguiente manera más simple. Elimina el riesgo de poner la cadena de conexión en control de fuente. No estoy seguro de cómo califica la seguridad en comparación con establecer una variable de entorno.

  1. En Azure Portal, configure la variable de entorno ASPNET_Env para el sitio web en ''Producción''.
  2. Asegure FTP al sitio web utilizando la dirección FTP que se muestra en Azure Portal. Tenga en cuenta que Azure Portal tiene un FTP seguro y un punto final de FTP no seguro. Asegúrate de usar el seguro. (Es posible que deba ''restablecer las credenciales de implementación'' a través de Azure Portal para establecer una contraseña de FTP).
  3. Encuentra dónde está el archivo appsettings.json: ''approot / src /''. Cópialo en ''appsettings.Production.json''.
  4. En ''appsettings.Production.json'', cambie la cadena de conexión a la cadena de conexión para la base de datos de producción.
  5. En la clase de Inicio en su proyecto ASP.NET 5:

var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true);

En ASP.NET 5, ¿cómo accedemos mediante programación a las cadenas de conexión de una aplicación web Azure? Pude recuperar el valor de TEST_APP_SETTINGS pero no el de TestConnString .

Esto es lo que he intentado:

services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings"));

Me temo que AppSettings no existe. También hice esto y se muestran las configuraciones de la aplicación, pero las cadenas de conexión no.

Startup.cs

// Setup configuration sources. Configuration = new Configuration() .AddJsonFile("config.json") .AddEnvironmentVariables(); // Allow access from *.cshtml services.AddSingleton<Configuration>(provider => { return Configuration as Configuration; });

Dev.cshtml

@inject Microsoft.Framework.ConfigurationModel.Configuration config; <dl> @foreach(var k in @config.GetSubKeys()) { <dt>@k.Key</dt> <dd>@config.Get(k.Key)</dd> } </dl>


Esta es una extensión de la respuesta de Victor que me ayudó a entender lo que estaba sucediendo en el nuevo entorno MVC 6.

En el archivo config.json tengo esto:

"Data": { "DefaultConnection": { "ConnectionString": "Server=(localdb)//mssqllocaldb;Database=aspnet5-TestWepApp-e35abc53-9a43-4b2b-886d-d8582c0a1ccd;Trusted_Connection=True;MultipleActiveResultSets=true" } },

Esta es la DefaultConnection que se usa siempre que mi DBContext usa el constructor vacío.

Ahora, la cadena de conexión de Azure se correlaciona con los datos: NAME: ConnectionString. Entonces vemos una correspondencia.

Todo lo que se necesita es ponerle nombre a la cadena de conexión de Azure "DefaultConnection" y asegurar que las variables de entorno estén incluidas en la configuración (que es por defecto) y que todo funcione como se espera.

configuration.AddJsonFile("config.json") // ... configuration.AddEnvironmentVariables()

Por lo tanto, cuando se carga la configuración, el valor config.json para Data: DefaultConnection: ConnectionString será reemplazado por la variable de entorno establecida por Azure porque AddEnvironmentVariables se invoca después de que config.json se carga en la configuración.

Actualizar

Después de usar la secuencia de comandos del OP para ver los valores de Debug, no veo la cadena de conexión en la lista.

El problema es que las claves son jerárquicas. Aquí está el código actualizado que debe mostrar todas las claves:

@* For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860 *@ @{ // ViewBag.Title = "Home Page"; } @inject Microsoft.Framework.ConfigurationModel.Configuration config; @functions{ public IEnumerable<string> GetAllKeys() { var keys = new List<string>(); foreach (var k in config.GetSubKeys()) { GetAllKeys(keys, k.Key); } return keys; } public void GetAllKeys(List<string> keys, string key) { keys.Add(key); foreach (var k in config.GetSubKeys(key)) { GetAllKeys(keys, key + ":" + k.Key); } } } <dl> @foreach (var key in GetAllKeys()) { <dt>@key</dt> <dd>@config.Get(key)</dd> } </dl>


Las cadenas de conexión se establecen como variables de entorno. Por lo tanto, primero debe agregar la fuente de configuración de la variable de entorno y luego las cadenas de conexión se denominarán Data:NAME:ConnectionString donde NAME es el nombre de la cadena de conexión en el portal.

Por ejemplo, si su cadena de conexión es "ServerConnection", puede acceder utilizando Data:ServerConnection:ConnectionString

Aquí están las pruebas que validan las asignaciones de configuración del entorno de mapeo, podrían explicarlo mejor.