Справочная информация: Мы находимся в процессе переноса приложения .Net в .Net Core.В качестве стратегии мы хотели бы сохранить существующую функциональность без изменений в полной среде при переносе части приложения в .Net Core.Полное приложение будет поддерживать .services через Net remoting и REST API, тогда как основное приложение .Net будет поддерживать только службы REST API.Мы решили сохранить одну и ту же кодовую базу для всего приложения и поддерживать компиляцию на нескольких платформах (NetcoreApp2.1 и Net472).Существует один файл конфигурации приложения.Большинство компонентов зависят от информации, хранящейся в этом файле.Таким образом, мы хотели бы сохранить один файл конфигурации для обеих платформ.Я использовал пакет System.Configuration.ConfigurationManager для доступа к информации о конфигурации.
Проблема: ConfigurationManager.GetSection (string) создает исключение на базовой платформе .Net, тогда как на Net472 оно работает нормально.Сообщение об ошибке: Системе конфигурации не удалось инициализироваться ---> System.Configuration.ConfigurationErrorsException: нераспознанный раздел конфигурации system.runtime.remoting
Обход пробовал до сих пор: ConfigurationManager.OpenExeConfiguration (configurationUserLevel).GetSection (string) отлично работает на обеих платформах для извлечения одного и того же раздела
Пример кода:
static MyConfigurationSection myConfigurationSettings { get; set; }
static void Main(string[] args)
{
LoadSettings();
}
private static void LoadSettings()
{
try
{
//Net472 : Works
//NetCoreApp2.1: Throws exception
myConfigurationSettings = ConfigurationManager.GetSection("myCustomSettings") as MyConfigurationSection;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
//Works on both platform
myConfigurationSettings = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).GetSection("myCustomSettings") as MyConfigurationSection;
Console.WriteLine(myConfigurationSettings.Applications.Count);
Console.ReadLine();
}
Вот файл конфигурации
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="myCustomSettings" type="TestConfigManager.MyConfigurationSection, TestConfigManager" />
</configSections>
<myCustomSettings>
<applications/>
</myCustomSettings>
<system.runtime.remoting>
<application>
<channels>
<channel ref="tcp" port="1111" />
</channels>
</application>
</system.runtime.remoting>
</configuration>