asp.net-core                
            Konfigurowanie wielu środowisk
        
        
            
    Szukaj…
Posiadanie ustawień dla środowiska
Dla każdego środowiska musisz utworzyć osobne ustawienia. Pliki {EnvironmentName} .json:
- appsettings.Development.json
- appsettings.Staging.json
- appsettings.Production.json
Następnie otwórz plik project.json i dołącz go do sekcji „uwzględnij” w sekcji „publikujOpcje”. Zawiera listę wszystkich plików i folderów, które zostaną uwzględnione podczas publikowania:
"publishOptions": {
  "include": [
    "appsettings.Development.json",
    "appsettings.Staging.json",
    "appsettings.Production.json"
    ... 
  ]
}
Ostatni krok. W klasie Startup dodaj:
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
w konstruktorze, w którym konfigurujesz źródła konfiguracji:
var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
Pobierz / sprawdź nazwę środowiska z kodu
 Wszystko czego potrzebujesz to zmienna typu IHostingEnvironment : 
- pobierz nazwę środowiska: - env.EnvironmentName
- zaprogramowanej - Development,- Staging,- Productionśrodowisk najlepszym sposobem jest użycie metod Extension z HostingEnvironmentExtensions klasie- env.IsDevelopment() env.IsStaging() env.IsProduction()
- poprawnie zignoruj wielkość liter (inna metoda rozszerzenia z HostingEnvironmentExtensions : - env.IsEnvironment("environmentname")
- wariant z rozróżnianiem wielkości liter: - env.EnvironmentName == "Development"
Konfigurowanie wielu środowisk
 Ten przykład pokazuje, jak skonfigurować wiele środowisk z różnymi konfiguracjami Wstrzykiwania zależności i osobnymi programami pośrednimi w jednej klasie Startup . 
 Oprócz public void Configure(IApplicationBuilder app) i public void ConfigureServices(IServiceCollection services) można użyć funkcji Configure{EnvironmentName} i Configure{EnvironmentName}Services aby mieć konfigurację zależną od środowiska. 
 Użycie tego wzorca pozwala uniknąć nadmiernej logiki if/else jednej metody / klasy Startup i utrzymuje ją w czystości i oddzieleniu. 
public class Startup
{
    public void ConfigureServices(IServiceCollection services) { }
    public void ConfigureStaggingServices(IServiceCollection services) { }
    public void ConfigureProductionServices(IServiceCollection services) { }
    
    public void Configure(IApplicationBuilder app) { }
    public void ConfigureStagging(IApplicationBuilder app) { }
    public void ConfigureProduction(IApplicationBuilder app) { }
}
 Gdy usługi Configure{Environmentname} lub Configure{Environmentname}Services nie zostaną znalezione, nastąpi powrót do odpowiednio opcji Configure lub ConfigureServices . 
 Ta sama semantyka dotyczy również klasy Startup . StartupProduction będą stosowane, gdy ASPNETCORE_ENVIRONMENT zmienna jest ustawiona na Production i spadnie z powrotem na Startup , kiedy to Stagging lub Development 
Kompletny przykład:
public class Startup
{
    public Startup(IHostingEnvironment hostEnv)
    {
        // Set up configuration sources.
        var builder = new ConfigurationBuilder()
            .SetBasePath(hostEnv.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{hostEnv.EnvironmentName}.json", optional: true, reloadOnChange: true);
        if (hostEnv.IsDevelopment())
        {
            // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately.
            builder.AddApplicationInsightsSettings(developerMode: true);
        }
        builder.AddEnvironmentVariables();
        Configuration = builder.Build();
    }
    public IConfigurationRoot Configuration { get; set; }
    // This method gets called by the runtime. Use this method to add services to the container
    public static void RegisterCommonServices(IServiceCollection services) 
    {
        services.AddScoped<ICommonService, CommonService>();
        services.AddScoped<ICommonRepository, CommonRepository>();
    }
    
    public void ConfigureServices(IServiceCollection services)
    {
        RegisterCommonServices(services);
        
        services.AddOptions();
        services.AddMvc();
    }
    public void ConfigureDevelopment(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();
        app.UseBrowserLink();
        app.UseDeveloperExceptionPage();
        app.UseApplicationInsightsRequestTelemetry();
        app.UseApplicationInsightsExceptionTelemetry();
        app.UseStaticFiles();
        app.UseMvc();
    }
    // No console Logger and debugging tools in this configuration
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddDebug();
        app.UseApplicationInsightsRequestTelemetry();
        app.UseApplicationInsightsExceptionTelemetry();
        app.UseStaticFiles();
        app.UseMvc();
    }
}
Renderuj zawartość specyficzną dla środowiska
Może być konieczne renderowanie niektórych treści w widoku, które są specyficzne tylko dla niektórych środowisk. Aby osiągnąć ten cel, możesz użyć pomocnika tagów środowiska:
<environment names="Development">
    <h1>This is heading for development environment</h1>
</environment>
<environment names="Staging,Production">
    <h1>This is heading for Staging or production environment</h1>
</environment>
 Pomocnik znacznika Środowisko wyświetli jego zawartość tylko wtedy, gdy bieżące środowisko pasuje do jednego ze środowisk określonych za pomocą atrybutu names . 
Ustaw zmienną środowiskową z wiersza poleceń
 Aby ustawić środowisko na Development 
 SET ASPNETCORE_ENVIRONMENT=Development 
Teraz aplikacja Asp.Net Core będzie działać w zdefiniowanym środowisku.
Uwaga
-  Nie powinno być spacji przed i po znaku równości =.
- Wiersz polecenia nie powinien być zamykany przed uruchomieniem aplikacji, ponieważ ustawienia nie zostały zachowane.
Ustaw zmienną środowiskową z PowerShell
Korzystając z PowerShell, możesz użyć setx.exe, aby ustawić zmienne środowiskowe na stałe.
- Uruchom PowerShell 
- Wpisz jedno z poniższych: - setx ASPNETCORE_ENVIRONMENT „rozwój” - setx ASPNETCORE_ENVIRONMENT „inscenizacja” 
- Uruchom ponownie PowerShell 
Za pomocą ASPNETCORE_ENVIRONMENT z web.config
Jeśli nie chcesz używać ASPNETCORE_ENVIRONMENT ze zmiennych środowiskowych i używać go z pliku web.config aplikacji, zmodyfikuj plik web.config w następujący sposób:
<aspNetCore processPath=".\WebApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>