有没有办法在单声道中使用WCF Discovery?

时间:2014-03-04 09:07:31

标签: c# .net wcf mono discovery

我正在努力让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),这似乎是我的问题的根本原因

1 个答案:

答案 0 :(得分:1)

我正在努力解决同样的问题。我已经尝试了很多方法,但我也无法让它工作。我认为你已经解决了CreateBehavior()没有实现的问题的根本原因。

我确实为我的应用程序创建了一个解决方案,尽管它不像纯WCF解决方案那样干净。使用mono项目的Zeroconf实现来发布服务,然后在客户端(再次使用zeroconf)浏览它,为我工作。找到服务后,我使用zeroconf结果创建我的WCF代理。

我对此使用的是同一子网内部客户端的内部服务,这使得此实现相对容易。我不确定它是否/如何跨子网工作,但根据“零配置网络:权威指南”(Cheshire,Seienberg),它可以完成。