我有一个自定义行为扩展,我在我的客户端app.config
中使用<extensions>
<behaviorExtensions>
<add name="consoleMessageTracing" type="Extensions.ConsoleMessageTracingElement, Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
这很好用,但如果我将自定义行为代码移动到一个强名称的项目中,并更新下面的行为:
<add name="consoleMessageTracing" type="Common.WcfExtensions.ConsoleMessageTracingElement, Common.WcfExtensions, Version=1.1.0.0, Culture=neutral, PublicKeyToken=f7ac309eefe2c404" />
我收到以下错误:
SetUp:System.Configuration.ConfigurationErrorsException:类型 “Common.WcfExtensions.ConsoleMessageTracingElement, Common.WcfExtensions,Version = 1.1.0.0,Culture = neutral, PublicKeyToken = f7ac309eefe2c404'已注册扩展 无法加载“consoleMessageTracing”。
任何人都可以帮助解释我做错了什么吗?令牌密钥正确且程序集的版本正确。
更新: 如果我使用WCF配置编辑器,我会收到相同的消息。由于某些原因,它无法读取DLL,因此Common.DLL位于bin目录中。
答案 0 :(得分:1)
好的,那么你在哪里部署强名称程序集?如果它在机器上的GAC中,那么它应该在那里找到它。如果它位于您的appbase下,那么第一个程序集ir找到匹配的DLL名称(Common.WcfExtensions.dll)将被检查,如果您碰巧有一个没有强名称,那么它将失败负载。
您可以尝试使用FusLogVw.exe查看尝试加载程序集时会发生什么 - 有使用它的指南here
我还发现行为扩展对名称中的空格等事物非常敏感。尝试以各种组合删除和添加空格