有 2 个选项。
选项 1. 使用渠道。
如果您直接使用通道,.NET 4.0 和 .NET 4.5 具有ConfigurationChannelFactory。MSDN上的示例如下所示:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "Test.config";
Configuration newConfiguration = ConfigurationManager.OpenMappedExeConfiguration(
fileMap,
ConfigurationUserLevel.None);
ConfigurationChannelFactory<ICalculatorChannel> factory1 =
new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
new EndpointAddress("http://localhost:8000/servicemodelsamples/service"));
ICalculatorChannel client1 = factory1.CreateChannel();
正如 Langdon 所指出的,您可以通过简单地传入 null 来使用配置文件中的端点地址,如下所示:
var factory1 = new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
null);
ICalculatorChannel client1 = factory1.CreateChannel();
这在 MSDN文档中进行了讨论。
选项 2. 使用代理。
如果您正在使用代码生成的代理,您可以读取配置文件并加载ServiceModelSectionGroup。与简单地使用相比,涉及的工作更多,ConfigurationChannelFactory
但至少您可以继续使用生成的代理(在后台使用 aChannelFactory
并IChannelFactory
为您管理。
Pablo Cibraro 在这里展示了一个很好的例子:Getting WCF Bindings and Behaviors from any config source