Расширения WCF без включения версии сборки - PullRequest
11 голосов
/ 11 ноября 2009

Как обсуждено здесь , я пытаюсь добавить расширение конечной точки 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 / поведение: Элемент расширения 'protobuf' не может быть добавлен к этому элементу. Убедитесь, что расширение зарегистрировано в коллекции расширений по адресу system.serviceModel / extensions / поведениеExtensions.

Возможно ли (и если да: как) добавить расширение без указания версии сборки?

Ответы [ 3 ]

11 голосов
/ 11 ноября 2009

AFAIK, к сожалению, невозможно использовать частичные имена в разделе поведенческих расширений. Как ни странно, это только для раздела поведенческих расширений. Например, вы можете сделать bindingElementExtensions без полного имени сборки. Похоже, тот, кто написал, что реализация раздела конфигурации не допускала частичной загрузки имени, как это сделали другие. Я еще не проверял, исправлено ли это в .NET 4.

1 голос
/ 03 июля 2012

Просто чтобы повторить то, что заметил @wojo. Если вы пришли сюда в поисках ответа на

"cannot be added to this element.  Verify that the extension is registered in the extension collection at system.serviceModel/extensions/behaviorExtensions."

и теперь вы работаете .Net 4, затем УДАЛИТЕ версию сборки, Culture, PublicKeyToken из тега добавления поведенияExtensions. все, что нужно (работало для меня), было полное пространство имен / класс, за которым следовала сборка.

1 голос
/ 24 апреля 2010

Вы думали об использовании WCF для Виндзора? Он автоматически связывает расширения с реализациями служб, когда они оба зарегистрированы в контейнере. Конечно, Виндзор не требует полных имен сборки. Если вы не используете Windsor, я уверен, что вы могли бы довольно легко создать эквивалентную среду для других контейнеров IoC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...