У меня есть сервер COM +, на котором размещен компонент .Net, который реализует ServicedComponent.
Сервер COM + должен получить доступ к файлу конфигурации, в котором определен пользовательский раздел конфигурации.
Я могу нормально загрузить конфигурацию с помощью следующего кода:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = @"%MY_FOLDER_WITH_ALL_DLLS%\MyComServer.dll.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
// All is fine until the next line:
MyCustomSettings customSettings = (MyCustomSettings)tempConfiguration1.GetSection("customSettings");
System.InvalidCastException: невозможно привести объект типа «System.Configuration.DefaultSection» к типу «MyProject.MyCustomSettings»
Вот как я объявил пользовательский раздел конфигурации в файле конфигурации:
<configSections>
<section name="MyProject.MyCustomSettings" type="MyProject.MyCustomSettings, MyProject, Version=1.0.3322.1077, Culture=neutral, PublicKeyToken=176fc8b9840b0b09"/>
</configSections>
Этот случай действительно возвращает объект DefaultSection, который, кажется, не очень полезен, так как я ожидал объект CustomSettings.
Обратите внимание, что MyProject строго назван.
Можно установить сборку MyProject.dll в GAC, но по организационным причинам это решение непривлекательно.
Есть еще какие-нибудь предложения?
Как загрузить пользовательский раздел конфигурации из файла конфигурации данной сборки из процесса, запущенного в DLLHost?
Спасибо.