1

我有一个 COM+ 服务器托管一个实现 ServicedComponent 的 .Net 组件。

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 是强命名的。

一种选择是在 GAC 中安装 MyProject.dll 程序集,但出于组织原因,此解决方案没有吸引力。

还有什么建议吗?

如何从运行在 DLLHost 中的进程的给定程序集的配置文件中加载自定义配置部分?

谢谢。

4

1 回答 1

0

我自己在这个问题上浪费了几个小时。最后,我通过将 <configSection> 移动到 <configuration> 的正下方解决了这个问题。一直以来,我在 <configSection> 之上还有其他配置元素。

于 2010-02-05T16:09:22.210 回答