【发布时间】:2012-11-14 02:01:40
【问题描述】:
我正在使用从BehaviorExtensionElement 扩展的类向我的 WCF 服务添加自定义端点行为以对其进行初始化。在我的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 而没有版本/文化/令牌,则服务无法启动并出现错误:
描述:处理此请求所需的配置文件时出错。请查看下面的具体错误详细信息并适当地修改您的配置文件。
解析器错误消息:为 system.serviceModel/behaviors 创建配置节处理程序时出错:无法将扩展元素“logBehavior”添加到此元素。验证扩展是否已在 system.serviceModel/extensions/behaviorExtensions 的扩展集合中注册。 参数名称:元素
作为我的构建过程的一部分,我的程序集版本的最后部分会经常更改。每次构建版本增加(可能是数百次)时,如何避免使用新版本号更新web.config?
【问题讨论】:
标签: c# .net wcf configuration web-config