为什么完全限定的程序集名称有时需要空格?

Cra*_*ief 11 .net c# fully-qualified-naming

今天偶然发现了这个,我找不到任何有关它的信息.所以这就是我在这里问的原因.也许有人知道为什么.

我在web.config中添加了一个自定义WCF行为扩展.它看起来像这样:

<behaviorExtensions>
    <add name="errorBehavior" type="MyNs.TracingErrorBehaviorElement,MyNs, 
         Version=1.0.6.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
Run Code Online (Sandbox Code Playgroud)

(在那里没有足够的空间:MyNs.TracingErrorBehaviorElement,MyNs)

它在我的开发机器,我们的登台服务器,我们的实时服务器等上运行得非常好.

今天我们在客户服务器上安装了产品,并得到以下例外:

System.Configuration.ConfigurationErrorsException:为system.serviceModel/behavior创建配置节处理程序时发生错误:无法将扩展元素"errorBehavior"添加到此元素.验证扩展是否已在system.serviceModel/extensions/behaviorExtensions扩展集合中注册...

花了半个小时在网上搜索可能的原因后,我在完全限定的程序集名称中添加了空格.所以我改成了:

<behaviorExtensions>
    <add name="errorBehavior" type="MyNs.TracingErrorBehaviorElement, MyNs, 
         Version=1.0.6.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
Run Code Online (Sandbox Code Playgroud)

(参见空间:MyNs.TracingErrorBehaviorElement, MyNs)

它起作用了.

有谁知道为什么它在某些机器上没有空间而不在其他机器上工作?我查了一下.Net-versions.他们匹配.它可能是由区域设置引起的吗?

编辑说:

我检查了所有机器上使用过的.Net版本,它们都是一样的:.Net 4.0但是我发现错误的机器和缺少的空白机器之间的区别是:它运行的所有机器没有空白已安装.Net Framework 4.5.所以它可能是4.0中修复并用4.5部署的那些错误之一,对吧?

Han*_*ant 5

这是一个已知的错误,在Shawn Cicoria的博客文章中有记录.

它没有说明错误修复的确切时间,WCF配置类完全过于复杂,无法缩小范围.我,鉴于帖子的年龄,这是一个.NET 4.5修复程序.由于安装了4.0,因此客户端站点出现故障.您从为项目挑选的目标中了解得更多.

否则,很好地证明微软修复错误是多么困难.