如上所述 这里,我正在尝试添加WCF端点扩展;我有它工作,但我需要包括完整的装配细节:
<extensions>
<behaviorExtensions>
<add name="protobuf" type="ProtoBuf.ServiceModel.ProtoBehaviorExtension, protobuf-net, Version=1.0.0.275, Culture=neutral, PublicKeyToken=257b51d87d2e4d67"/>
</behaviorExtensions>
</extensions>
我会怎么做 喜欢 要做的(以避免更新等问题,特别是对于样本)是仅包括名称:
<add name="protobuf" type="ProtoBuf.ServiceModel.ProtoBehaviorExtension, protobuf-net"/>
(这可能是您对标准汇编命名约定的期望)
但是,如果我这样做,我会收到一个大错误:
分析器错误消息: 为system.serviceModel / behavior创建配置节处理程序时发生错误:无法将扩展元素'protobuf'添加到此元素。验证扩展是否已在system.serviceModel / extensions / behaviorExtensions的扩展集合中注册。
是吗 可能 (如果是这样的话:如何)添加扩展而不必指定程序集版本?
AFAIK,遗憾的是,不能在behaviorExtensions部分中使用部分名称。奇怪的是,它仅适用于behaviorExtensions部分。例如,您可以在没有完整程序集名称的情况下执行bindingElementExtensions。只是看起来像编写配置部分实现的人不允许部分名称加载,而其他人一样。我还没有检查过.NET 4中是否已经解决了这个问题。
AFAIK,遗憾的是,不能在behaviorExtensions部分中使用部分名称。奇怪的是,它仅适用于behaviorExtensions部分。例如,您可以在没有完整程序集名称的情况下执行bindingElementExtensions。只是看起来像编写配置部分实现的人不允许部分名称加载,而其他人一样。我还没有检查过.NET 4中是否已经解决了这个问题。
你有没有想过为温莎使用WCF设施?当它们都在容器中注册时,它会自动将扩展连接到服务实现。当然,Windsor不需要完整的装配名称。如果你不使用Windsor,我相信你可以很容易地为其他IoC容器构建一个等效的框架。
只是重申@wojo所说的话。
如果你来这里寻找答案
"cannot be added to this element. Verify that the extension is registered in the extension collection at system.serviceModel/extensions/behaviorExtensions."
并且您现在正在运行.Net 4然后从behaviorExtensions添加标记中删除程序集Version,Culture,PublicKeyToken。
所有需要的(为我工作)是完整的命名空间/类,后面是程序集。