最近在学习WCF技术,在学习到WCF拓展时,发现一个奇怪的问题。
就是在使用自定义拓展元素时,如果按照下面的方式在配置文件注册拓展元素(配置文件手写):
<add name="ContextPropagationExtension" type="HXW.WCF.Extension.ContextPropagationBehaviorElement, HXW.WCF.Extension, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
程序运行时会抛出一个异常:
未处理 System.Configuration.ConfigurationErrorsException
Message="创建 system.serviceModel/behaviors 的配置节处理程序时出错: 无法将扩展元素“ContextPropagationExtension”添加到此元素中。请验证该扩展是否已在 system.serviceModel/extensions/behaviorExtensions 中的扩展集合中注册。\r\n参数名: element (F:\\hxw\\wcf\\HXW.WCF\\HXW.WCF.Host\\bin\\Debug\\HXW.WCF.Host.vshost.exe.Config line 10)"
研究了两天都解决不了。
最后google了才发现是微软的BUG。具体看下面的链接:
https://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=216431
具体解决方式如下:
把上面那段配置改为:
<add name="ContextPropagationExtension" type="HXW.WCF.Extension.ContextPropagationBehaviorElement, HXW.WCF.Extension, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
(就是在,后面加上一个空格)
就正常了。所以大家手写配置文件一定要注意。