porta azure asp.net-core connection-string

porta - Establecer la cadena de conexión SQL para la aplicación web ASP.NET Core en Azure



porta azure (4)

Creé una nueva aplicación web ASP.NET Core en Visual Studio 2015. También configuré una aplicación web Azure para acceder a la aplicación desde GitHub y ejecutarla. Esto funciona bien, pero tengo problemas para conectarme a la base de datos en Azure.

Localmente, esto funciona, y usa config.json y en el código Data:DefaultConnection:ConnectionString para la cadena de conexión.

¿Cómo puedo dejar el código tal como está y hacer que funcione en Azure también? Intenté establecer la Configuración de la aplicación en el portal, tanto las cadenas de conexión como las configuraciones de la aplicación. Y usando tanto "SQLCONNSTR_DefaultConnection" como "Data: DefaultConnection: ConnectionString" como la clave.

(Establecer la configuración de la aplicación no parece funcionar por cierto. Creo que el valor que proporciono es demasiado largo).

Entonces, ¿cómo puedo proporcionar la cadena de conexión para mi base de datos de Azure a mi aplicación web Azure (ASP.NET 5), sin registrarla en el control de código fuente?

Actualice My Startup.cs tiene este aspecto (consulte el archivo completo en GitHub ):

public Startup(IHostingEnvironment env) { var configuration = new Configuration() .AddJsonFile("config.json") .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true); if (env.IsEnvironment("Development")) { configuration.AddUserSecrets(); } configuration.AddEnvironmentVariables(); Configuration = configuration; }

En el método ConfigureServices , también hay:

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

y, también en el método ConfigureServices :

services.AddEntityFramework() .AddSqlServer() .AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])) .AddDbContext<InvoicesDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); // So this is where I want my app in Azure to use the connection string I // provide in the portal


Respuesta corta

Intenté establecer la Configuración de la aplicación en el portal, tanto las cadenas de conexión como las configuraciones de la aplicación. Y usando tanto "SQLCONNSTR_DefaultConnection" como "Data: DefaultConnection: ConnectionString" como la clave.

Estás cerca.

  1. Vaya a la aplicación web Azure> configure> cadenas de conexión.
  2. Agregue una cadena de conexión con el nombre DefaultConnection .
  3. Use Configuration.Get("Data:DefaultConnection:ConnectionString") para acceder a él.

Ejemplo utilizando timesheet_db lugar de DefaultConnection

Este es un ejemplo de mi propia aplicación de parte de horas. Mi cadena de conexión se llamó timesheet_db . Simplemente reemplace todas las instancias de esa cadena con DefaultConnection para adaptar el ejemplo a su caso de uso.

Configuración de la aplicación web Azure

Gestor de control del servicio de la aplicación web Azure

El administrador de control de servicio en línea en https://myWebAppName.scm.azurewebsites.net/Env mostrará las cadenas de conexión.

Startup.cs

Configure los ajustes de configuración en Startup para que las variables ambientales sobrescriban config.json.

public IConfiguration Configuration { get; set; } public Startup() { Configuration = new Configuration() .AddJsonFile("config.json") .AddEnvironmentVariables(); <----- will cascade over config.json }

Configure la base de datos en Startup .

public void ConfigureServices(IServiceCollection services) { services .AddEntityFramework() .AddSqlServer() .AddDbContext<ProjectContext>(options => { var connString = Configuration.Get("Data:timesheet_db:ConnectionString"); options.UseSqlServer(connString); }); }

Por supuesto, el ejemplo usa una cadena de conexión llamada timesheet_db . Para usted, reemplace todas las instancias con su propia cadena de conexión llamada DefaultConnection y todo funcionará.


Creo que estás buscando la configuración de SlotSticky

Use este comando en Azure PowerShell para establecer 2 configuraciones de aplicaciones como adhesivas para la ranura

Set-AzureWebsite -Name mysite -SlotStickyAppSettingNames @("myslot", "myslot2")

Y este comando para establecer 2 cadenas de conexión como adhesivas a la ranura

Set-AzureWebsite -Name mysite -SlotStickyConnectionStringNames @("myconn", "myconn2")

Saludos


En RC2 tuve que cambiar la forma en que se leían las cadenas de conexión para que funcionaran en Azure. En mi caso, tuve que asegurarme de que la cadena de conexión de Azure se llamara "DefaultConnection", y accediera por:

RC1:

{ "Data": { "DefaultConnection": { "ConnectionString": "Server=(localdb)//MSSQLLocalDB;Database=db;Trusted_Connection=True;" } } }

Accedido por:

var conn = Configuration["Data:DefaultConnection:ConnectionString"];

RC2:

{ "Data": { }, "ConnectionStrings": { "DefaultConnection": "Server=(localdb)//MSSQLLocalDB;Database=db;Trusted_Connection=True;" } }

Accedido por:

var conn = Configuration.GetConnectionString("DefaultConnection");


Usted tiene una serie de opciones para configurar su cadena de conexión. La clase de configuración predeterminada obtiene la configuración del entorno de diferentes fuentes. Puede establecer su cadena de conexión en config.production.json. o config.staging.json. Vea la clase de inicio

public Startup(IHostingEnvironment env) { // Setup configuration sources. var configuration = new Configuration() .AddJsonFile("config.json") .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true); if (env.IsEnvironment("Development")) { // This reads the configuration keys from the secret store. // For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709 configuration.AddUserSecrets(); } configuration.AddEnvironmentVariables(); Configuration = configuration; }