2016-05-26 12 views
3

Ich versuche, Konfigurationswerte in meinem statischen void main meiner aktualisierten Asp.Net Core RC2-Anwendung zu erhalten. Im Konstruktor für Startup kann ich IHostingEnvironment injiziert bekommen, kann dies aber nicht in einer statischen Methode tun. Ich folge https://github.com/aspnet/KestrelHttpServer/blob/dev/samples/SampleApp/Startup.cs, möchte aber mein pfx-Passwort in Appsettings haben (ja, es sollte in user secrets sein und wird dort irgendwann ankommen).Zugriff auf die IHostingEnvironment in statischer Hauptkomponente von ASP.NET Core

public Startup(IHostingEnvironment env){} 

public static void Main(string[] args) 
{ 
     var builder = new ConfigurationBuilder() 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddJsonFile("hosting.json"); 
     builder.AddEnvironmentVariables(); 
     var configuration = builder.Build(); 
     ... 
     var host = new WebHostBuilder() 
      .UseKestrel(options => 
      { 
       // options.ThreadCount = 4; 
       options.NoDelay = true; 
       options.UseHttps(testCertPath, configuration["pfxPassword"]); 
       options.UseConnectionLogging(); 
      }) 
} 

Antwort

1

Wenn Sie das Kennwort für das HTTPS-Zertifikat speichern schließlich in den User-Secrets fügen Sie die folgenden Zeilen in den entsprechenden Abschnitten in Haupt von Program.cs:

var config = new ConfigurationBuilder() 
    .AddUserSecrets("your-user-secrets-id") //usually in project.json 

var host = new WebHostBuilder() 
    .UseConfiguration(config) 
      .UseKestrel(options=> { 
       options.UseHttps("certificate.pfx", config["your-user-secrets-id"]); 
      }) 

Die Benutzer Geheimnisse müssen direkt übergeben werden, da die Konfiguration von project.json für "userSecretsId" zu diesem Zeitpunkt noch nicht verfügbar ist.

8

Nach einiger Diskussion über aspnetcore.slack.com im #general Kanal (Mai 26,2016 12.25), sagte David Fowler „Sie webhostbuilder neu können und rufen GetSetting (‚Umwelt‘)“ und "hosting config! = app config".

var h = new WebHostBuilder(); 
var environment = h.GetSetting("environment"); 
var builder = new ConfigurationBuilder() 
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{environment}.json", optional: true) 
     .AddEnvironmentVariables(); 
var configuration = builder.Build(); 
+0

Es scheint, dass GetSetting nicht mehr Teil von WebHostBuilder in .Net Core 2.0 ist. – Alan

Verwandte Themen