2017-06-30 6 views
8

Wir haben benutzerdefinierte Umgebungsvariablen im Elastic Beanstalk-Dashboard unter Konfiguration => Softwarekonfiguration => "Umgebungseigenschaften" festgelegt. In einem C# MVC 5-Projekt können wir einfach auf diese Variablen zugreifen, indem wir sie mit ConfigurationManager.AppSettings suchen - das funktioniert großartig.Zugriff auf benutzerdefinierte AWS ElasticBeanstalk-Umgebungsvariablen mit .NET Core WebApp

In .NET Core verwenden wir jedoch web.config nicht mehr. Wir haben versucht, einen Weg zu finden, auf die Umgebungsvariablen zuzugreifen, aber alles, was wir gefunden haben, ist ein nugget-Paket namens AWSSDK.Extensions.NETCore.Setup. Dieses Paket scheint uns jedoch nicht den Zugriff auf die benutzerdefinierten Variablen zu ermöglichen.

Jede Hilfe würde sehr geschätzt werden.

Antwort

10

Basierend auf meinen Untersuchungen und Tests ist dies ein Mangel in AWS Elastic Beanstalk für ASP.NET Core 1.1-Anwendungen. Dieses Problem wurde heute einfach gelöst, und der einzige Weg, es zu lösen, ist das Laden der Config, die AWS schreibt (falls vorhanden), indem der ASP.NET ConfigurationBuilder verwendet und analysiert wird.

AWS sollte dies schließlich beheben, bis dahin können Sie die Methode verwenden Ich verwende:

public Startup(IHostingEnvironment env) 
    { 
     var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddJsonFile(@"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration", optional: true, reloadOnChange: true) 
      .AddEnvironmentVariables(); 

     var config = builder.Build(); 

     builder.AddInMemoryCollection(ParseEbConfig(config)); 

     Configuration = builder.Build(); 
    } 

    private static Dictionary<string, string> ParseEbConfig(IConfiguration config) 
    { 
     Dictionary<string, string> dict = new Dictionary<string, string>(); 

     foreach (IConfigurationSection pair in config.GetSection("iis:env").GetChildren()) 
     { 
      string[] keypair = pair.Value.Split(new[] { '=' }, 2); 
      dict.Add(keypair[0], keypair[1]); 
     } 

     return dict; 
    } 
+0

Danke danke danke! Ich weiß es zu schätzen, dass du die ganze Arbeit daran gemacht hast, dies zu durchbrechen - es funktioniert ganz gut. Es wäre großartig, ein nuget-Paket bereitzustellen, mit dem die Benutzer dieses Problem umgehen können, bis AWS es für immer löscht. – Javelin

+0

Gibt es einen Ort, an dem ich dieses Problem verfolgen kann? – user3752919

+1

Was für ein Gott bist du? – Jhayes2118

Verwandte Themen