我正在为我的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
?
答案 0 :(得分:3)
我认为在.net 4或更高版本中删除了对完全指定的类名的限制。你试过了吗?
<behaviorExtensions>
<add name="logBehavior"
type="MyNamespace.MyBehaviorExtensionElement, MyAssembly" />
</behaviorExtensions>
我可能错了!