我正在编写一个想要使用配置控制的自定义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'。注意该属性 名称区分大小写
如果我没有在绑定上指定任何属性,那么它可以工作。我在这里做错了什么?
答案 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;
}
}