gpt4 book ai didi

c# - 发现 - ProbeMatch 响应被丢弃

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:01 25 4
gpt4 key购买 nike

我在使用 onvif 相机,但在发现方面遇到了一些问题。

使用如下所示的非常基本的发现代码,我从我们网络上的大多数设备得到了回复,但有一些被丢弃了。我添加了跟踪日志记录,我可以看到发现客户端丢弃的消息以及描述

A ProbeMatches message with messageId='uuid:xxx' and relatesTo='uuid:xx' was dropped by the DiscoveryClient because either the corresponding Find operation was completed or the relatesTo value is invalid.

查看跟踪中的 relatesTo 值以及 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);
}

最佳答案

我在 ONVIF 模式下使用一些 ACTi 相机(例如 KCM-3911、I51)遇到了同样的问题。两个 ONVIF 客户端 - ONVIF 测试工具和 Onvif 设备管理器 - 能够发现这些相机,但不能发现我自己的代码,这基本上等同于您的代码。在检查包含与您的错误相同的错误的 WCF 消息和跟踪日志,并比较来自这些摄像头的 Probe 和 ProbeMatch 回复时,我注意到 messageId 和 relatesTo 值都缺少 WS 寻址所需的“urn:”前缀。

我已就此差异联系 ACTi 技术支持,该差异不符合依赖于 WS 寻址规范的 ONVIF 规范。同时,我正在研究 ONVIF 测试工具和 Onvif 设备管理器如何处理 ProbeMatch 以发现这些摄像头,尽管它们所做的一定不符合规范,否则它们也会拒绝 ProbeMatch 回复像 WCF。

关于c# - 发现 - ProbeMatch 响应被丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21408519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com