Stringa di connessione ASP.NET 5 / EF7 in web.config?

asp.net-core entity-framework-core

Domanda

In ASP.Net 4.5 potrei mettere la mia stringa di connessione nel web.config per trarre vantaggio dalle web.config transformations di web.config transformations modo da poter lavorare localmente con il DB di sviluppo e poi quando lo pubblicherò punterei al DB di produzione. Ora sto lavorando con ASP.Net 5 e EF 7 che sembra utilizzare il file config.json per memorizzare le stringhe di connessione invece di web.config . Con questo nuovo modo di archiviare i file non riesco a capire come fare qualcosa come le web.config transformations del passato. Come posso configurare config.json per farlo o configurarlo in modo da poterlo fare in web.config e avere EF per le stringhe?

Risposta accettata

La sintassi di trasformazione web.config è orientata al formato XML dei dati. Le nuove configurazioni sono costituite da alcuni file in formato JSON e uno può implementare scenari di staging molto semplici.

Prima di tutto, i supporti ASP.NET consentono di impostare l'ambiente di destinazione utilizzando la variabile d'ambiente ASPNET_ENV o impostando Hosting:Environment nel file launchSettings.json (consultare la cartella Properties del progetto). Il file launchSettings.json può essere modificato in Visual Studio nelle proprietà del progetto. Si dovrebbe prima scegliere il "Profilo"

inserisci la descrizione dell'immagine qui

e fai le impostazioni per ogni profilo. In alternativa, è possibile modificare manualmente il file Properties\launchSettings.json .

Alcuni file di configurazione, come hosting.json funzionano automaticamente utilizzando la gestione temporanea. In questo modo è possibile impostare, ad esempio, porte diverse e collegamenti di interfacce differenti specificando server.urls in hosting.json e hosting.Development.json per esempio.

Per includere la logica di staging in appsettings.json necessario modificare il costruttore della classe Startup in Startup.cs . Per esempio:

public class Startup
{
    public static IConfigurationRoot Configuration { get; set; }

    public Startup(IHostingEnvironment env)
    {
        // Set up configuration sources.
        var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc()
            .AddJsonOptions(options => {
                options.SerializerSettings.ContractResolver =
                    new CamelCasePropertyNamesContractResolver();
            });
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<MyContext>(options => {
                options.UseSqlServer(Configuration["Data:ConnectionString"]);
            })
            .AddDbContext<SM9Context>(options => {
                options.UseSqlServer(Configuration["Data:SM9ConnectionString"]);
            });
    }
}

Il codice sopra salva la configurazione nella proprietà Configuration e quindi usa ConfigureServices per effettuare l'iniezione dei contesti del database MyContext e SM9Context . Ad esempio, è possibile creare il file principale appsettings.json con tutta la configurazione produttiva e creare il file appsettings.Development.json che appsettings.Development.json override di una sola stringa di collegamento (da Data:ConnectionString e Data:SM9ConnectionString ):

{
  "Data": {
    "ConnectionString": "Server=..."
  }
}

ASP.NET si combinano sia i file appsettings.json e facoltativo appsettings.Development.json per creare il set completo di parametri di configurazione.

L'articolo e la parte della documentazione descrivono come è possibile utilizzare la gestione temporanea in ASP.NET 5.


Risposta popolare

Puoi fare qualcosa di simile per importare configs da diversi file * .json, il seguente li basa sull'ambiente o da variabili d'ambiente;

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

È inoltre possibile utilizzare il gestore segreto ASPNET.

Ogni volta che una configurazione a cui si accede, sovrascriverà le impostazioni per tutti i valori di configurazione che ha, il che significa che la variabile rifletterà tutto ciò che è stato impostato per durare.

Guarda i documenti su Configurazione .




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché