C# 无法连接Onvif摄像机

C# 无法连接Onvif摄像机,c#,camera,onvif,C#,Camera,Onvif,我已经在ONVIF上工作了一周。我想实现ONVIF提供的所有服务。我已经设法发现了ONVIF设备,并获得了关于这些设备的信息(比如设备的名称、配置文件、Uri)。我在代码中使用Onvif(发现、服务、会话、utils)和utils(异步、通用、诊断、utils.fsharp)作为项目 我有两个摄像头,一个是ReadLeaf,另一个是IPNC。我能够成功地发现它们。当我试图获取有关设备的信息时,我能够正确获取ReadLeaf相机的信息,但在IPNC的情况下,它会给我一个错误:- 中发生“Syste

我已经在ONVIF上工作了一周。我想实现ONVIF提供的所有服务。我已经设法发现了ONVIF设备,并获得了关于这些设备的信息(比如设备的名称、配置文件、Uri)。我在代码中使用Onvif(发现、服务、会话、utils)和utils(异步、通用、诊断、utils.fsharp)作为项目

我有两个摄像头,一个是ReadLeaf,另一个是IPNC。我能够成功地发现它们。当我试图获取有关设备的信息时,我能够正确获取ReadLeaf相机的信息,但在IPNC的情况下,它会给我一个错误:-

中发生“System.ServiceModel.Security.MessageSecurityException” mscorlib.dll,但未在用户代码中处理。

附加信息:HTTP请求未经客户端授权 身份验证方案“匿名”。接收到的身份验证标头 来自服务器的是'Digest realm=“onvif”,qop=“auth,auth int”, nonce=“587343b5ca703a95f874”,不透明=“08138641”

我在谷歌上搜索了这个错误,发现可能有两个问题:

1) 客户端和服务器上的安全设置不匹配

2) 这通常会发生,因为消息正在向Web日志服务器发送时间戳,而响应没有时间戳,请尝试在安全设置中关闭时间戳

然后我和我的前辈聊了聊,他告诉我在摄像机端的onvif实现中存在问题。相机制造商没有将onvif正确安装到相机中

现在,我有点困惑,到底是什么问题,问题的解决方案是什么

摄像机详细信息:-

ReadLeaf型号-RLC-DF2011

IPNC模型-ONVIF_IPNC

任何形式的帮助都是非常值得赞赏的


谢谢。

摄像头实现可选的HTTP摘要身份验证。当配置文件的摄像头同时实现UsernameToken和HTTP摘要身份验证时,如果未提供身份验证,则必须向客户端建议后者

您看到的错误可能是因为您正在调用ONVIF函数,该函数需要身份验证而不提供凭据,因此相机返回HTTP 401


只需通过添加HTTP摘要身份验证的凭据来重复调用。如果要使用未实现摘要的摄像头,请准备好接收soap错误,而不是HTTP 401。

如果我是您,我会使用标准的onvif工具进行尝试,看看这是否真的是摄像头问题或您的代码。onvif工具示例:如果我没记错的话(我已经3年没有使用onvif了),那么相机的日期时间必须与与其通信的机器的日期时间相匹配。我可能错了,就像我说的,我已经有一段时间没有参与安全工作了。我记得DateTime的问题though@user3060520我使用过onvif设备管理器工具,在连接到IPNC摄像头时也遇到同样的错误。IPNC摄像头是否配备了执行相同操作的实用程序?通常,调试这些问题的最佳方法是使用诸如wireshark或fiddler之类的嗅探器。将工作应用程序中的消息与您的c#代码进行比较。这些错误通常是由于HTTP请求缺少所需的标头(或标头具有错误选项)。出现这种情况的原因很多。通常需要代理服务器或证书,但可能只是缺少设置。通常在调试这些问题时,我会在更改代码后删除IE cookie。Pld cookie可能会导致错误。@CallumBradbury,我已经同步了摄像头和计算机的计时,但它不起作用。