如何读取app.config文件中定义的basicHttpBinding

时间:2012-07-12 12:20:33

标签: c# app-config configurationmanager basichttpbinding

我正在试图弄清楚如何阅读如何读取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。我不确定我做错了什么。

0 个答案:

没有答案