从behaviorExtension以版本无关的方式引用DLL

时间:2012-10-10 13:02:34

标签: .net iis

  

可能重复:
  How do i specify wcf behaviorExtension class type without the assembly version number?

在我在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属性的末尾。

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

如果我改变了       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 / behavior:扩展元素'serviceKeyBehavior'   无法添加到此元素。验证扩展名是否正确   在扩展集合中注册   system.serviceModel /扩展/ behaviorExtensions。参数名称:   element(C:\ inetpub \ wwwroot \ xyz \ web.config第155行)   检查事件日志(ID:1265)以获取更多信息。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

How do i specify wcf behaviorExtension class type without the assembly version number?