2015-11-22 18 views
8

Ho un'applicazione ASP.Net 5 in cui ho alcuni valori di configurazione memorizzati nel file config.json. il mio file config.json è qualcosa del genere.Sovrascrittura dei valori di configurazione nel file config.json nell'app Web di Azure in ASP.Net 5

{ 
    "AppSettings": { 
    "SiteEmailAddress": "[email protected]", 
    "APIKey": "some_api_key" 
    } 
} 

Sto installando il file config.json da utilizzare in Startup.cs file in questo modo.

public static IConfigurationRoot Configuration; 

public Startup(IApplicationEnvironment appEnv) { 

    var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath) 
       .AddJsonFile("config.json") 
       .AddEnvironmentVariables(); 
    Configuration = builder.Build(); 
} 

e l'accesso alle impostazioni di configurazione come questo ..

var email = Startup.Configuration["AppSettings:SiteEmailAddress"]; 

All'inizio ASP.Net possiamo utilizzare il file Web.Config per memorizzare queste Impostazioni applicazione e sovrascrivere le impostazioni in App nella sezione Impostazioni Azure App e questo funziona senza problemi. Ma come posso fare la stessa cosa nell'app ASP.Net 5.

Come posso eseguire l'override dei valori di configurazione nel file config.json nella sezione Impostazioni app in Azure.

risposta

19

Aggiungi come Impostazioni app in Azure, proprio come sei abituato. Per i valori di configurazione nidificate, utilizzare

AppSettings:SiteEmailAddress 

Etc ... (AppSettings qui riferimento a ciò che è stato utilizzato nel vostro config.json, la somiglianza con Azure Impostazioni applicazione è una coincidenza)

AddEnvironmentVariables() come te è stato fatto per farlo funzionare.

+0

Grazie .. Funziona perfettamente .. –

+0

Chiamato anche "appsettings.json" in .NET Core. – silkfire

0

Supponendo di avere appsettings.json, è possibile aggiungere altre impostazioni di file. {Ambiente} .json, ad esempio appsettings.Production.json. Solo le impostazioni, definite nel file di produzione, sovrascrivono le impostazioni in appsettings.json. Ora, aggiungere il seguente al costruttore di avvio

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

Successivamente, si dovrebbe andare a launchSettings.json in cui sono definiti tutti i server e aggiornare variabile di ambiente di produzione. Ad esempio,

"web": { 
    "commandName": "web", 
    "environmentVariables": { 
    "Hosting:Environment": "Production" 
    } 

Ora distribuire in azzurro.

+0

C'è un modo per non dover cambiare Hosting: Environment ogni volta che viene distribuito? Possiamo renderlo permanente? – Martin

+0

si dovrebbe definire "profilo" per ogni ambiente nel file launchSettings.json. Ogni profilo dovrebbe avere il proprio "Hosting: Ambiente". cioè per IIS Express => Sviluppo, per web => Produzione –

+2

Vedo. Ma come Azure sa come scegliere il profilo "web"? Cosa succede se mi piacerebbe avere un profilo "Produzione Azure"? – Martin

Problemi correlati