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

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

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

Сообщение ProbeMatches с messageId='uuid:xxx' и refersTo='uuid:xx' было удалено клиентом DiscoveryClient, так как либо соответствующая операция поиска была завершена, либо значение 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);
    }

person kerry    schedule 28.01.2014    source источник


Ответы (1)


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

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

person Ron Woods    schedule 05.11.2014
comment
Привет, я больше не работаю в компании, для которой я разрабатывал это, и у меня нет доступа к какому-либо коду или устройствам. Я также задал вопрос о msdn, возможно, стоит продолжить и эту тему social.msdn.microsoft.com/Forums/vstudio/en-US/ - person kerry; 06.11.2014