如何在web.config中避免添加汇编版本?

时间:2012-11-26 15:02:37

标签: c# .net wcf configuration web-config

我正在为我的WCF服务添加一个自定义端点行为,其类扩展为BehaviorExtensionElement以初始化它。在我的web.config中,我添加以下内容来注册行为扩展名:

<system.serviceModel>
    <services>
      <service name="Service.MyService">
        <endpoint address=""
                  behaviorConfiguration="endpointBehavior"
                  binding="basicHttpBinding"
                  contract="Contracts.IMyService"/>
      </service>
    </services>

    <behaviors>
      <endpointBehaviors>
        <behavior name="endpointBehavior">
          <logBehavior />
        </behavior>
      </endpointBehaviors>
    </behaviors>

    <extensions>
      <behaviorExtensions>
        <add name="logBehavior"
             type="MyNamespace.MyBehaviorExtensionElement, MyAssembly, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null" />
      </behaviorExtensions>
    </extensions>
</system.serviceModel>

这非常正常,但我必须指定程序集的版本才能加载它。如果我将程序集引用更改为仅MyNamespace.MyBehaviorExtensionElement, MyAssembly而没有版本/ culture / token,则服务无法启动并显示错误:

  

描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。

     

分析器错误消息:为system.serviceModel / behavior创建配置节处理程序时发生错误:无法将扩展元素“logBehavior”添加到此元素。验证扩展是否已在system.serviceModel / extensions / behaviorExtensions的扩展集合中注册。   参数名称:element

我的程序集版本的最后一部分将在构建过程中经常更改。每次构建版本增加(可能是数百次)时,如何避免必须使用新版本号更新web.config

1 个答案:

答案 0 :(得分:3)

我认为在.net 4或更高版本中删除了对完全指定的类名的限制。你试过了吗?

  <behaviorExtensions>
     <add name="logBehavior"
         type="MyNamespace.MyBehaviorExtensionElement, MyAssembly" />
  </behaviorExtensions>

我可能错了!