0

可能重复:
如何在没有程序集版本号的情况下指定 wcf behaviorExtension 类类型?

在我托管在 IIS7 上的 Web 应用程序中,我有一个项目 X 引用项目 Y(VS2010 中的项目参考)。我正在尝试在 X 的 web.config 中添加来自 Y 类型的 behaviorExtensions,而不指定版本号。

我在 System.ServiceModel.Extensions 下添加了一个 behaviorExtension。

<behaviorExtensions>
<add name="serviceKeyBehavior" type="MyNS.ServiceSupport.ServiceKeyBehaviorExtensionElement, Analyst.API"/>
<add name="userNameClientCredentials" type="MyNS.ServiceSupport.UserNameClientCredentialsElement, Analyst.API" />
</behaviorExtensions>

如果不指定例如,我无法使其工作

Version=3.2.1.0, Culture=neutral, PublicKeyToken=null

在类型属性的末尾。

通常只需忽略上面的版本信息就可以了。

如果我改变 type="MyNS.ServiceSupport.ServiceKeyBehaviorExtensionElement, Analyst.API"

type="MyNS.ServiceSupport.ServiceKeyBehaviorExtensionElement, Analyst.API, Version=3.2.1.0, Culture=neutral, PublicKeyToken=null"

(3.2.1.0 == 当前 DLL 版本),它可以工作。

否则它声称它找不到类型:

为 system.serviceModel/behaviors 创建配置节处理程序时出错:无法将扩展元素“serviceKeyBehavior”添加到此元素。验证扩展是否已在 system.serviceModel/extensions/behaviorExtensions 的扩展集合中注册。参数名称:元素(C:\inetpub\wwwroot\xyz\web.config 第 155 行)查看事件日志(ID:1265)以获取更多信息。

有什么想法吗?

4

1 回答 1

0

我发现了 2008 年的这篇博文:

http://keyvan.io/configuration-error-for-custom-behavior-extensions-in-wcf

这似乎是 WCF 中的一个错误。我尝试使用 .Net framework 4.0 重新编译它,然后它工作正常。

StackOverflow 上还有一个线程描述了这个我以前没有找到的:

如何在没有程序集版本号的情况下指定 wcf behaviorExtension 类类型?

于 2012-10-10T13:13:56.120 回答