hxw

博客园 首页 新随笔 联系 订阅 管理
  10 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

最近在学习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" />

(就是在,后面加上一个空格)

就正常了。所以大家手写配置文件一定要注意。

posted on 2008-11-11 21:19 redfox105 阅读(1650) 评论(8) 编辑 收藏

Feedback

#1楼 2008-11-11 21:55 Ariex[未注册用户]
我觉得我没看出来有什么区别……
 回复 引用   

#2楼 2008-11-11 22:50 Gray Zhang      
原因是你把一个属性断行了,这事实上就加了一个\n,因此配置文件(ConfigurationLoader)就无法加载了……所以一个属性还是别换行的比较好
 回复 引用 查看   

#3楼[楼主] 2008-11-11 23:58 redfox105      
@Ariex
中间多了个空格

 回复 引用 查看   

#4楼[楼主] 2008-11-12 00:01 redfox105      
其实是没有断行的.
Extension, Version
中间有空格就正常,没有空格就会出现异常.

 回复 引用 查看   

#5楼 2008-11-12 09:26 Artech      
我经常遇到这个问题:)
 回复 引用 查看   

#6楼 2008-11-12 11:35 sail[未注册用户]
以前我把wcf的服务端部署到win 2003 上,
客户端的系统访问不到。
出现 未授权证书的问题。
你们有解决办法吗?

 回复 引用   

#7楼 2009-09-17 01:00 熊掌      
谢谢楼主,我也花了一整天时间,在排查这个错误。
 回复 引用 查看   

#8楼 2009-09-17 01:01 熊掌      
引用redfox105:其实是没有断行的.
<br/>Extension, Version
<br/>中间有空格就正常,没有空格就会出现异常.

我觉得还是使用WCF的配置编辑工具,不容易出错。

 回复 引用 查看