我正在努力让WCF Discovery在单声道3.2.8中运行。单声道网页提到了许多Discovery行为应该存在,但我无法通过代码设置或App.config设置来使其工作。这在.net中100%有效,所以我知道至少原则是正确的。
这类似于以下未回答的问题: WCF Udp Discovery in mono
但是,我的具体问题是:在单声道中是否有任何方式使用WCF发现?
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 in 4.5 - 您会注意到CreateBehavior()上有一个NotImplemented图标(位于:System.ServiceModel.Discovery.Configuration.ServiceDiscoveryElement),这似乎是我的问题的根本原因
答案 0 :(得分:1)
我正在努力解决同样的问题。我已经尝试了很多方法,但我也无法让它工作。我认为你已经解决了CreateBehavior()没有实现的问题的根本原因。
我确实为我的应用程序创建了一个解决方案,尽管它不像纯WCF解决方案那样干净。使用mono项目的Zeroconf实现来发布服务,然后在客户端(再次使用zeroconf)浏览它,为我工作。找到服务后,我使用zeroconf结果创建我的WCF代理。
我对此使用的是同一子网内部客户端的内部服务,这使得此实现相对容易。我不确定它是否/如何跨子网工作,但根据“零配置网络:权威指南”(Cheshire,Seienberg),它可以完成。