我有一个app.config文件,其形式为:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <client> <endpoint address="http://something.com" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileTransfer" contract="ABC" name="XXX" /> <endpoint address="http://something2.com" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileTransfer" contract="ABC2" name="YYY" /> </client> </system.serviceModel> </configuration>
我想读取节点端点的属性“address”的值,其名称为“XXX”.请告诉我该怎么做!
(继续讨论与marc_s讨论.抱歉把文字放在这里,因为评论不允许格式化代码)
@marc_s:我使用下面的代码来读取上面的文件,但它显示clientSection.Endpoints有0个成员(Count = 0).请帮忙!
public MainWindow() { var exeFile = Environment.GetCommandLineArgs()[0]; var configFile = String.Format("{0}.config",exeFile); var config = ConfigurationManager.OpenExeConfiguration(configFile); var wcfSection = ServiceModelSectionGroup.GetSectionGroup(config); var clientSection = wcfSection.Client; foreach (ChannelEndpointElement endpointElement in clientSection.Endpoints) { if (endpointElement.Name == "XXX") { var addr = endpointElement.Address.ToString(); } } }
解决方法
你真的不需要–WCF运行时将为你做所有这些.
如果你真的必须 – 无论出于何种原因 – 你可以这样做:
using System.Configuration; using System.ServiceModel.Configuration; ClientSection clientSettings = ConfigurationManager.GetSection("system.serviceModel/client") as ClientSection; string address = null; foreach(ChannelEndpointElement endpoint in clientSettings.Endpoints) { if(endpoint.Name == "XXX") { address = endpoint.Address.ToString(); break; } }
原文地址:https://www.jb51.cc/csharp/97928.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。