我试图弄清楚如何阅读如何阅读 app.config 文件中定义的 basicHttpBinding 部分。我试图像做端点地址一样做,但它不起作用。以下是我的端点地址:
private EndpointAddress EndPointAddy
{
get
{
var config = ConfigurationManager.GetSection("system.serviceModel/Client") as ServiceModelSectionGroup;
foreach (ChannelEndpointElement endpoint in config.Client.Endpoints)
{
Uri address = endpoint.Address;
if (address != null)
{
return new EndpointAddress(address);
}
}
return null;
}
}
这是我用 BasicHttpBinding 尝试过的
private BasicHttpBinding Binding
{
get
{
var config = ConfigurationManager.GetSection("system.serviceModel/Client") as ServiceModelSectionGroup;
foreach (ChannelEndpointElement bindings in config.Bindings.BasicHttpBinding)
{
string binding = config.Bindings.BasicHttpBinding;
if (config.Bindings.BasicHttpBinding != null)
{
return new BasicHttpBinding(config.Bindings.BasicHttpBinding);
}
}
return null;
}
但是我收到一个错误,指出:
“foreach 语句无法对‘System.ServiceModel.Configuration.BasicHttpBindingCollectionElement’类型的变量进行操作,因为‘System.ServiceModel.Configuration.BasicHttpBindingCollectionElement’不包含‘GetEnumerator’的公共定义”
我试过用 BasicHttpBindingElement 替换 ChannelEndpointElement 但这没有帮助。我不知道如何正确执行此操作,以便获得与端点地址相同的效果。
编辑: 我以为我已经解决了这个问题,但我所做的只是摆脱了错误。当我尝试调试程序时,我收到一个
System.NullReferenceException:对象引用未设置为对象的实例
在以下点:
foreach (ChannelEndpointElement bindings in config.Bindings.BasicHttpBinding.Bindings)
然而,即使它在这条线上失败了,我注意到它上面的线:
var config = ConfigurationManager.GetSection("system.serviceModel") as ServiceModelSectionGroup;
也是空的。我不确定我做错了什么。