Обнаружение - ответ ProbeMatch отбрасывается

Я работаю с камерами onvif, но у меня есть несколько проблем с обнаружением.

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

Сообщение ProbeMatches с messageId='uuid:xxx' и relatedTo='uuid:xx' было удалено DiscoveryClient, потому что либо соответствующая операция Find была выполнена, либо значение relatedTo недопустимо.

Глядя на значение relatedTo в трассировке, а также в MS Network Monitor, они кажутся точно такими же, а отбрасываемые - в первых нескольких ответах, так что я не думаю, что они есть после завершения операции.

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

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);
    }

1 ответ

Я столкнулся с такой же проблемой с некоторыми камерами ACTi (например, KCM-3911, I51) в режиме ONVIF. Два клиента ONVIF - инструмент тестирования ONVIF и диспетчер устройств Onvif - смогли обнаружить эти камеры, но не мой собственный код, который по сути эквивалентен вашему коду. Изучив журналы сообщений и трассировки WCF, которые содержат ту же ошибку, что и ваша, и сравнив ответы Probe и ProbeMatch от этих камер, я заметил, что в значениях messageId и relatedTo отсутствует префикс "urn:", требуемый для адресации WS.

Я связался со службой технической поддержки ACTi по поводу этого несоответствия, которое не соответствует спецификациям ONVIF, основанным на спецификации WS-адресации. В то же время я изучаю, как инструмент тестирования ONVIF и диспетчер устройств Onvif обрабатывают ProbeMatch для обнаружения этих камер, хотя то, что они делают, не должно соответствовать спецификациям, в противном случае они также будут отклонять ответы ProbeMatch. как WCF.

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