我们在WCF服务中使用.NET Extensions,这意味着在启动时将检查Extension文件夹是否有dll文件,如果有,则将这些文件作为扩展名加载。
问题是extes可能有自己的配置文件和端点,但是当从WCF服务中运行扩展时,我们将在WCF服务appdomain中,这意味着将使用WCF服务web.config来定位终点。
是的我可以将端点移动到web.config但是如果我这样做,那么扩展将更加严格,这不是我认为的扩展的想法。
我可能也会在扩展程序dll中临时更改appdomain,但这真的是正确的方法吗?
答案 0 :(得分: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中的新功能。