【发布时间】:2014-01-28 14:36:54
【问题描述】:
我在使用 onvif 相机,但在发现方面存在一些问题。
使用下面的非常基本的发现代码,我得到了我们网络上大多数设备的回复,但有一些被丢弃了。我添加了跟踪日志记录,我可以看到发现客户端丢弃的带有描述的消息
DiscoveryClient 删除了带有 messageId='uuid:xxx' 和 relatedTo='uuid:xx' 的 ProbeMatches 消息,因为相应的查找操作已完成或 relatedTo 值无效。
查看跟踪中的相关值以及 MS 网络监视器中的值,它们似乎完全相同,而被丢弃的那些在前几个回复中,所以我认为它们不是在操作完成之后。
我还运行了 sourceforge 上的 onvif 设备管理器,这有同样的问题,但使用不同的设备,有没有人遇到过这个问题或有任何想法可能导致它。
public void TryToDiscoverClients()
{
System.Net.ServicePointManager.Expect100Continue = false;
var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);
var discoveryClient = new DiscoveryClient(endPoint);
discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged;
FindCriteria findCriteria = new FindCriteria();
findCriteria.Duration = TimeSpan.MaxValue;
findCriteria.MaxResults = int.MaxValue;
findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", @"http://www.onvif.org/ver10/network/wsdl"));
findCriteria.ContractTypeNames.Add(new XmlQualifiedName("Device", @"http://www.onvif.org/ver10/device/wsdl"));
discoveryClient.FindAsync(findCriteria);
}
private void discoveryClient_FindProgressChanged(object sender, FindProgressChangedEventArgs e)
{
Results.Add(e);
}
【问题讨论】:
标签: c# wcf service-discovery onvif ws-discovery