2012-02-08 141 views
1

我们在我们的WCF服务中使用.NET扩展,这意味着在启动时会检查扩展文件夹中的dll文件,如果有的话,这些文件将作为扩展名加载。配置文件和扩展

问题是extesions可能有自己的配置文件与端点,但是从WCF服务内部运行扩展时,我们将在WCF服务appdomain中运行,这意味着WCF服务web.config将用于找到端点。

是的我可以将端点移动到web.config,但如果我这样做,那么扩展将更加绑定,这不是我认为的扩展的想法。

我大概也可以在扩展dll中暂时改变appdomain,但这真的是正确的方法吗?

回答

1

的解决方案是使用下面的代码:

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中新。