我正在试图弄清楚如何阅读如何读取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,但这没有帮助。我不知道如何正确地执行此操作,以便获得与endpointAddress相同的效果。
修改 我以为我已经修好了,但我所做的就是摆脱错误。当我尝试调试程序时,我收到了
System.NullReferenceException:未将对象引用设置为实例 对象
在以下几点:
foreach (ChannelEndpointElement bindings in config.Bindings.BasicHttpBinding.Bindings)
然而,即使它在这一行失败,我注意到它上面的一行:
var config = ConfigurationManager.GetSection("system.serviceModel") as ServiceModelSectionGroup;
也是null。我不确定我做错了什么。