2016-11-07 12 views
6

Ich muss einige Abhängigkeiten (Services) in der ConfigureServices-Methode in einer ASP.NET Core 1.0-Webanwendung einrichten.Eigentlich lesen AppSettings in ConfigureServices-Phase in ASP.NET Core

Das Problem ist, dass basierend auf der neuen JSON-Konfiguration muss ich einen Dienst oder eine andere einrichten.

ich nicht wirklich scheinen, um die Einstellungen in der ConfigureServices Phase der App Lebensdauer zu lesen:

public void ConfigureServices(IServiceCollection services) 
{ 
    var section = Configuration.GetSection("MySettings"); // this does not actually hold the settings 
    services.Configure<MySettingsClass>(section); // this is a setup instruction, I can't actually get a MySettingsClass instance with the settings 
    // ... 
    // set up services 
    services.AddSingleton(typeof(ISomething), typeof(ConcreteSomething)); 
} 

ich muß eigentlich diesen Abschnitt lesen und entscheiden, was für ISomething (vielleicht eine andere Art registrieren als ConcreteSomething).

+2

See http://Stackoverflow.com/q/40397648/5426333 –

+0

@ademcaglin: Danke! Das war's. Ich habe dafür gestimmt, dass ich meine eigene Frage als ein Duplikat davon abschließe :) –

+0

Die verknüpfte Antwort besteht darin, Werte aus der Konfigurationsdatei zu erhalten, nicht aus der Datei appsettings.json. – im1dermike

Antwort

1

Ausgehend von ASP.NET Core 2.0 führen wir die Konfiguration in Program Klasse beim Aufbau WebHost Instanz. Beispiel für eine solche Einrichtung:

return new WebHostBuilder() 
    .UseKestrel() 
    .UseContentRoot(Directory.GetCurrentDirectory()) 
    .ConfigureAppConfiguration((builderContext, config) => 
    { 
     IHostingEnvironment env = builderContext.HostingEnvironment; 

     config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); 
    }) 

Unter anderem ermöglicht diese Konfiguration direkt in Startup-Klasse, eine Instanz von IConfiguration über Konstruktor Injektion bekommen (danke, integrierter DI-Container):

public class Startup 
{ 
    public Startup(IConfiguration configuration) 
    { 
     Configuration = configuration; 
    } 

    public IConfiguration Configuration { get; } 

    ... 
} 
+0

yeah! hat für mich gearbeitet. endlich kann ich meine Sachen von Json Einträge bekommen, um meine Dienste vorzubereiten: – AmiNadimi

Verwandte Themen