Есть ли способ использовать WCF Discovery в моно?

Я пытаюсь заставить WCF Discovery работать в моно 3.2.8. На моно-веб-странице упоминается, что там должно быть много поведения Discovery, но я не могу заставить его работать через настройку кода или App.config. Это работает на 100% в.net, поэтому я знаю, что по крайней мере принципы верны.

Это похоже на вопрос без ответа по адресу: WCF Udp Discovery в моно

но мой конкретный вопрос: есть ли способ использовать WCF Discovery в моно?

Настройка App.config выдает эту ошибку:

[ERROR] FATAL UNHANDLED EXCEPTION: System.Configuration.ConfigurationErrorsException:
Error deserializing configuration section behaviors: 
Invalid element in configuration. The extension name 'serviceDiscovery' is not 
registered in the collection at system.serviceModel/extensions/behaviorExtensions

Настройка кода выдает эту ошибку:

System.InvalidOperationException: Contract 'TargetService' is not implemented 
in this service 'MyService'

Я могу предоставить код, если это необходимо, но, поскольку я прошу другой способ, который работает, я не верю, что он необходим на данный момент.

Если вы ссылаетесь на Mono System.ServiceModel.Discovery в 4.5 - вы заметите, что в CreateBehavior() (расположен по адресу: System.ServiceModel.Discovery.Configuration.ServiceDiscoveryElement) имеется значок NotImplemented, который, по-видимому, является основной причиной моей проблемы.,

1 ответ

Решение

Я борюсь с той же проблемой. Я пробовал несколько подходов, но я не могу заставить его работать. Я думаю, что вы дошли до основной причины проблемы с не реализованной CreateBehavior().

Я создал обходной путь для своего приложения, хотя оно не такое чистое, как чистое решение WCF. Использование реализации Zeroconf в монофоническом проекте для публикации сервиса, а затем поиска его на стороне клиента (опять же с zeroconf) работало для меня. После нахождения службы я использую результаты zeroconf для создания моего прокси WCF.

Я использую для этого внутреннюю службу для внутренних клиентов в одной подсети, что делает эту реализацию относительно простой. Я не уверен, если / как это работает в подсетях, но в соответствии с "Сетями с нулевой конфигурацией: полное руководство" (Чешир, Сайенберг), это можно сделать.

Другие вопросы по тегам