2017-06-29 6 views
4

Ich möchte den DbConnectionString über das Befehlszeilenargument an meine .NET Core Web API-App übergeben..NET Core Web Project - Verwenden von Befehlszeilenargumenten

Nach dem Lesen:

.NET core Pass Commandline Args to Startup.cs from Program.cs

Mein Program.cs sieht ungefähr so ​​aus:

 public static void Main(string[] args) { 

     var config = new ConfigurationBuilder() 
      .AddCommandLine(args) 
      .Build(); 
     var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseConfiguration(config) 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build(); 

     host.Run(); 
    } 

So, jetzt ... Ich habe die Befehlszeile args auf die Sammlung von Schlüsselwertpaar hinzugefügt configs von meinem WebHostBuider ...

In Startup.cs ist jedoch, wo ich alles wie meine DbContext (die den DbConnectionString erfordert registriert geben als arg Kommandozeile)

My Startup Konstruktor sieht wie folgt aus:

 public Startup(IHostingEnvironment env) { 
     var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables(); 
     Configuration = builder.Build(); 
    } 

Da zuvor meine Verbindungszeichenfolge in einer Config-Datei gespeichert wurde.

Meine Frage ist - Wie greife ich auf die Befehlszeilenargumente von Startup.cs ?? Ich habe versucht, Konstruktor Injektion mit IConfiguration und IConfigurationRoot in Startup.cs, aber keiner von diesen registriert sind.

Antwort

0

fehlte ich

.ConfigureServices(s => s.AddSingleton<IConfigurationRoot>(config)) 

In meinem Program.cs. Feste Version wie folgt:

public static void Main(string[] args) { 
     var config = new ConfigurationBuilder() 
      .AddCommandLine(args) 
      .Build(); 
     var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseConfiguration(config) 
      .ConfigureServices(s => s.AddSingleton<IConfigurationRoot>(config)) 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build(); 

     host.Run(); 
    }` 
Verwandte Themen