配置文件和扩展
问题描述:
我们在我们的WCF服务中使用.NET扩展,这意味着在启动时会检查扩展文件夹中的dll文件,如果有的话,这些文件将作为扩展名加载。配置文件和扩展
问题是extesions可能有自己的配置文件与端点,但是从WCF服务内部运行扩展时,我们将在WCF服务appdomain中运行,这意味着WCF服务web.config将用于找到端点。
是的我可以将端点移动到web.config,但如果我这样做,那么扩展将更加绑定,这不是我认为的扩展的想法。
我大概也可以在扩展dll中暂时改变appdomain,但这真的是正确的方法吗?
答
的解决方案是使用下面的代码:
string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = path + @"\MyExtension.dll.config" };
//ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = path + @"\unittesting.dll.config" };
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
ConfigurationChannelFactory<MyExtension.MyExtentionManService.GetObjectResponderInterface> factory = new ConfigurationChannelFactory<GetObjectResponderInterface>("GetObjectResponderPort", configuration, null);
这是在.NET 4.0中新。