要从 app.config 中读取端点、绑定和其他部分,定义了一组 Section 类来帮助我们读取设置。
例如,要读取绑定列表,我们可以简单地使用,
private void GetNetTcpBindingName()
{
Configuration appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModel = ServiceModelSectionGroup.GetSectionGroup(appConfig);
BindingsSection oBinding = serviceModel.Bindings;
List<BindingCollectionElement> bindingCollection = oBinding.BindingCollections;
NetTcpBindingCollectionElement netTCPBindingCollectionElement = (NetTcpBindingCollectionElement)bindingCollection.Where(obj => obj.BindingName.Equals("netTcpBinding")).SingleOrDefault();
if (netTCPBindingCollectionElement != null)
{
Console.WriteLine(netTCPBindingCollectionElement.ConfiguredBindings.ElementAt(0).Name);
}
}
给定以下 app.config XML(感兴趣的部分以粗体显示),
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ITrainerManagement" />
</basicHttpBinding>
**<netTcpBinding>
<binding name="NetTcpBinding_ILiveStream">
<security mode="None" />
</binding>
</netTcpBinding>**
</bindings>
<client>
<endpoint address="net.tcp://sever-pc/PST.TS.LiveStream/LiveStream.svc"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ILiveStream"
contract="LiveStreamServiceReference.ILiveStream" name="NetTcpBinding_ILiveStream" />
<endpoint address="http://10.5.50.115/PST.TS.TrainerService/TrainerManagement.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITrainerManagement"
contract="TrainerManagementServiceReference.ITrainerManagement"
name="BasicHttpBinding_ITrainerManagement" />
</client>
</system.serviceModel>
希望这可以帮助。这可用于读取任何标准设置。