2012-02-08 183 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中新。