Проблема заключается в следующем.У веб-приложения 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();