今天偶然发现了这个,我找不到任何关于它的信息。所以这就是我在这里问的原因。也许有人知道为什么。
我在 web.config 中添加了一个自定义 WCF 行为扩展。它看起来像这样:
<behaviorExtensions>
<add name="errorBehavior" type="MyNs.TracingErrorBehaviorElement,MyNs,
Version=1.0.6.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
(里面没有空格MyNs.TracingErrorBehaviorElement,MyNs
:)
它在我的开发机器、我们的登台服务器、我们的实时服务器等上运行良好。
今天我们在客户服务器上安装了产品,出现以下异常:
System.Configuration.ConfigurationErrorsException:为 system.serviceModel/behaviors 创建配置节处理程序时发生错误:无法将扩展元素“errorBehavior”添加到此元素。验证扩展是否已在 system.serviceModel/extensions/behaviorExtensions... 的扩展集合中注册
在花了半个小时在网上搜索可能的原因后,我在完全限定的程序集名称中添加了空格。所以我把它改成:
<behaviorExtensions>
<add name="errorBehavior" type="MyNs.TracingErrorBehaviorElement, MyNs,
Version=1.0.6.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
(见空间MyNs.TracingErrorBehaviorElement, MyNs
:)
它奏效了。
有谁知道为什么它在某些机器上没有空间而不在其他机器上工作?我检查了.Net-versions
. 他们匹配。会不会是地域设置造成的?
编辑说:
我检查了所有机器上使用的 .Net 版本,它们都是相同的:.Net 4.0 但我发现出现缺失空白的错误的机器与其他机器之间存在差异:它工作的所有机器没有空白的已经安装了.Net Framework 4.5。所以它可能是在 4.0 中修复并在 4.5 中部署的错误之一,对吧?