今天偶然发现了这个,我找不到任何相关信息。所以这就是为什么我在这里问。也许有人知道为什么。
我在我的 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: An error occurred creating the configuration section handler for system.serviceModel/behaviors: Extension element 'errorBehavior' cannot be added to this element. Verify that the extension is registered in the extension collection at 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 版本
。他们匹配。会不会是区域设置导致的?
编辑说:
我检查了所有机器上使用的 .Net 版本,它们都是一样的:.Net 4.0 但是我发现我收到错误并缺少空白的机器与它工作的其他机器之间存在差异: 所有没有空白的机器都安装了.Net Framework 4.5。所以它可能是在 4.0 中修复并在 4.5 中部署的错误之一,对吧?
最佳答案
这是一个已知错误,记录在 this blog post 中肖恩·西科里亚 (Shawn Cicoria) 着。
它没有说明错误修复的确切时间,WCF 配置类太复杂了,无法缩小范围。考虑到帖子的年代,我猜测这是一个 .NET 4.5 修复。由于安装了 4.0,客户端站点出现故障。您会从为项目选择的目标中了解得更多。
否则可以很好地证明微软修复错误是多么困难。
关于c# - 为什么完全限定的程序集名称有时需要空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22346094/