4

我试图弄清楚如何阅读如何阅读 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;

也是空的。我不确定我做错了什么。

4

0 回答 0