V ASP.Net 4.5 som mohol vložiť svoj pripojovací reťazec do web.config
ako využiť web.config transformations
takže by som mohol lokálne pracovať s vývojovou databázou a potom, keď publikujem, bude to odkazovať na výrobnú databázu. Teraz pracujem s technológiami ASP.Net 5 a EF 7, ktoré, ako sa zdá, používajú internet config.json
súbor na uloženie pripojovacích reťazcov namiesto web.config
, S týmto novým spôsobom ukladania súborov nemôžem prísť na to, ako robiť niečo podobné web.config transformations
z minulosti. Ako môžem buď nastaviť config.json
to ALEBO nakonfigurovať, aby som to mohol urobiť v web.config a EF tam hľadal reťazce?
odpovede:
3 pre odpoveď č. 1Na web.config
transformačná syntax je zameraná na XML formát údajov. Nové konfigurácie pozostávajú z niektorých súborov vo formáte JSON a je možné implementovať scenáre predstavenia veľmi ľahko.
V prvom rade podpora ASP.NET umožňuje nastaviť cieľové prostredie podľa použitia ASPNET_ENV
premenná prostredia alebo nastavením Hosting:Environment
v launchSettings.json
súbor (pozri Properties
priečinok vášho projektu). Súbor launchSettings.json
môžu byť upravené vo Visual Studio vo vlastnostiach projektu. Najprv by ste si mali zvoliť profil
a nastavte nastavenie pre každý profil. Prípadne je možné súbor upraviť PropertieslaunchSettings.json
manuálne.
Niektoré konfiguračné súbory, napr hosting.json
funguje automaticky pomocou postupovania. Môžete tak napríklad zadať rôzne porty a rôzne väzby rozhraní server.urls
v hosting.json
a hosting.Development.json
napríklad.
Zahrnúť logiku postupovania do systému Windows appsettings.json
je potrebné zmeniť konštruktora Startup
trieda v Startup.cs
, Napríklad:
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"]);
});
}
}
Vyššie uvedený kód uloží konfiguráciu do Configuration
a potom používa ConfigureServices
podať injekciu MyContext
a SM9Context
kontext databázy. Jeden môže napríklad vytvoriť hlavné appsettings.json
súbor so všetkými produktívnymi konfiguráciami a vytvoriť appsettings.Development.json
súbor, ktorý prepíše iba jeden (od dvoch Data:ConnectionString
a Data:SM9ConnectionString
) pripojovací reťazec:
{
"Data": {
"ConnectionString": "Server=..."
}
}
ASP.NET skombinuje oba súbory appsettings.json
a voliteľné appsettings.Development.json
na vytvorenie celej sady konfiguračných parametrov.
Článok a časť dokumentácie popisuje, ako je možné použiť postupovanie v ASP.NET 5.
2 pre odpoveď č. 2
Môžete urobiť niečo také, aby ste stiahli konfigurácie z rôznych súborov * .json, ktoré ich zakladajú na prostredí alebo z premenných prostredia;
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
.AddEnvironmentVariables();
Môžete tiež použiť tajný správca ASPNET.
Zakaždým, keď sa otvorí konfigurácia, prepíše nastavenia všetkých konfiguračných hodnôt, ktoré má, čo znamená, že premenná bude odrážať to, čo bolo nastavené ako posledné.
Pozrite sa na stránku Dokumenty o konfigurácii.