Конфигурация сервера COM + с пользовательским ConfigurationSection - PullRequest
1 голос
/ 05 февраля 2009

У меня есть сервер 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?

Спасибо.

1 Ответ

0 голосов
/ 05 февраля 2010

Я сам потратил несколько часов на эту проблему. В конце концов я решил это, переместив вправо ниже . Все это время у меня были другие элементы конфигурации выше .

...