用户定义的WCF绑定配置中无法识别的属性名称

时间:2014-06-30 17:48:51

标签: c# asp.net wcf

我正在编写一个想要使用配置控制的自定义WCF绑定。要清楚,我不是在讨论使用标准<customBinding>元素,而是继承Binding并编写完整的类。

我的绑定并不是很复杂,我真的只有一个属性,我想通过config useSsl设置。但是,我很难让.NET识别我的配置属性,即使我相信我的一切都按顺序排列。

装订

public class MyCustomBinding : Binding {

    public MyCustomBinding() {
        // Initialization
    }

    private bool _useSsl;

    public bool UseSsl {
        get { return _useSsl; }
        set { _useSsl = value; }
    }

    // Remaining implementation omitted

}

绑定配置元素

public class MyCustomBindingElement : StandardBindingElement {

      protected override Type BindingElementType {
          return typeof(MyCustomBinding);
      }

      // public const string UseSsl = "useSsl"
      [ConfigurationProperty(ConfigurationStrings.UseSsl, DefaultValue: true)]
      public bool UseSsl {
          get { return (bool)this[ConfigurationStrings.UseSsl]; }
          set { this[ConfigurationStrings.UseSsl] = value; }
      }


      // Remaining implementation omitted

}

绑定配置集合元素

public class MyCustomBindingCollectionElement
    : StandardBindingCollectionElement<MyCustomBinding, MyCustomBindingElement> {}

我已在 web.config 文件中注册了收集元素:

  <extensions>
      <bindingExtensions>
          <add name="myCustomBinding" type="MyCustomWcf.MyCustomBindingCollectionElement, MyCustomWcf"/>
      </bindingExtensions>
  </extensions>

然后在我的<bindings>部分,我添加了一个自定义绑定的实例。

<myCustomBinding>
    <binding useSsl="false" />
</myCustomBinding>

但是,我在运行时收到以下配置异常:

  

无法识别的属性'useSsl'。注意该属性   名称区分大小写

如果我没有在绑定上指定任何属性,那么它可以工作。我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

快速浏览一下。您指定ConfigurationStrings.UseSsl,但在配置中放入useSsl。你能纠正这个并再试一次吗?

答案 1 :(得分:0)

&#34;属性&#34; MyCustomBindingElement的属性也需要更新如下。希望有帮助...

    protected override ConfigurationPropertyCollection Properties
    {
        get
        {
            var result = base.Properties;
            result.Add(new ConfigurationProperty("useSsl", typeof(bool)));

            return base.Properties;
        }
    }