Основное приложение Asp.Net, размещенное на IIS, выдает System.TypeLoadException при попытке использовать AWS Parameter Store - PullRequest
0 голосов
/ 25 февраля 2019

Проблема заключается в следующем.У веб-приложения Asp.Net Core 2.2, ориентированного на полную версию 4.6.1, возникают проблемы с размещением.Config извлекается из хранилища параметров AWS, вызывая пакет «Amazon.Extensions.Configuration.SystemsManager».Теперь это выполняется локально, все параметры конфигурации успешно удалены.Вот что происходит, когда приложение публикуется и запускается «dotnet. \ AppName.exe»:

"Exception 1 of 4:
System.TypeLoadException: Could not load type 
'System.Configuration.ConfigurationManager' from assembly 
'System.Configuration, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a'.
  at Amazon.Runtime.AppConfigAWSCredentials..ctor()
  at Amazon.Runtime.FallbackCredentialsFactory.<>c.<Reset>b__8_0()
  at Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(Boolean 
  fallbackToAnonymous)"

У меня фактически установлен пакет System.Configuration.ConfigurationManager, v. 4.5.0.Однако здесь может возникнуть проблема совместимости, поскольку список ошибок в VS сообщает следующее:

Warning ProjectName depends on System.Configuration.ConfigurationManager (>= 
4.0.0) but System.Configuration.ConfigurationManager 4.0.0 was not found. An 
approximate best match of System.Configuration.ConfigurationManager 4.4.0 
was resolved.   ProjectName  
C:\Users\username\source\repos\ProjectName\ProjectName\ProjectName.csproj    
0   

Есть ли способ загрузить System.Configuration.ConfigurationManager v.4.0.0 (его нет вГалерея Nuget)?Есть ли другой способ исправить это?

Upd: Вот код, демонстрирующий добавление хранилища параметров в Program.cs:

public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((context, builder) =>
            {
                var env = context.HostingEnvironment;
                // We use the AWS Parameter Store to load configuration variables
                builder.AddSystemsManager(configureSource =>
                {
                    // Parameter Store prefix to pull configuration data from.
                    configureSource.Path = $"/path/in/parameter/store/{env.EnvironmentName}";

                    // Reload configuration data every 5 minutes.
                    configureSource.ReloadAfter = TimeSpan.FromMinutes(5);
                });
            })
            .UseStartup<Startup>()
            .UseIISIntegration()
            .Build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...