2017-06-30 34 views
8

Ustawiliśmy niestandardowe zmienne środowiskowe w panelu Elastic Beanstalk w konfiguracji => konfiguracja oprogramowania => "Właściwości środowiska". W projekcie C# MVC 5 możemy uzyskać dostęp do tych zmiennych, szukając ich za pomocą ConfigurationManager.AppSettings - który działa świetnie.Dostęp do zmiennych środowiska niestandardowego AWS ElasticBeanstalk z .NET Core WebApp

W rdzeniu .NET nie używamy już web.config. Próbowaliśmy znaleźć sposób na uzyskanie dostępu do zmiennych środowiskowych, ale wszystko, co znaleźliśmy, to pakiet nuget o nazwie AWSSDK.Extensions.NETCore.Setup. Jednak ten pakiet nie zapewnia nam dostępu do zmiennych niestandardowych.

Każda pomoc zostanie bardzo doceniona.

Odpowiedz

10

Na podstawie moich badań i testów jest to niedobór AWS Elastic Beanstalk dla aplikacji ASP.NET Core 1.1. Właśnie wpadł na ten problem dzisiaj i jedynym sposobem na rozwiązanie jest załadowanie konfiguracji, którą AWS zapisuje (jeśli jest tam) za pomocą ASP.NET ConfigurationBuilder i przeanalizować go.

AWS powinien w końcu rozwiązać ten problem, do tego czasu można użyć metody używam:

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

dziękuję dziękuję dziękuję! Doceniam, że wykonałeś całą pracę nad rozwiązaniem tego problemu - działa całkiem dobrze. Byłoby wspaniale dostarczać pakiet nugetowy, z którego ludzie mogliby korzystać, aby obejść ten problem, dopóki AWS nie rozwiąże go trwale. – Javelin

+0

Czy jest miejsce, w którym mogę śledzić ten problem? – user3752919

+1

Jakiego rodzaju jesteś bogiem? – Jhayes2118