我已经在ONVIF上工作了一个星期。我想实现ONVIF提供的所有服务。我设法发现ONVIF设备并获取有关设备的信息(如设备的名称,配置文件,Uri)。我在我的代码中使用Onvif(发现,服务,会话,工具)和utils(async,common,diagnostic,utils.fsharp)作为项目。
我有两个相机,一个是ReadLeaf,另一个是IPNC。我能够成功地发现它们。当我试图获取有关设备的信息时,我能够正确获取ReadLeaf相机的信息,但是在IPNC的情况下它给我一个错误: -
发生了'System.ServiceModel.Security.MessageSecurityException' mscorlib.dll但未在用户代码中处理。
其他信息:HTTP请求未经授权与客户端 认证方案'匿名'。收到身份验证标头 从服务器是'Digest realm =“onvif”,qop =“auth,auth-int”, nonce =“587343b5ca703a95f874”,opaque =“08138641”'。
我搜索了这个错误,发现可能存在两个问题:
1)客户端和服务器上的安全设置不匹配。
2)这通常是因为消息正在向Web日志服务器发送时间戳,并且响应没有时间戳,请尝试关闭安全性中的时间戳。
然后我和我的老人聊天,他告诉我摄像头上的onvif实现有问题。相机制造商没有将onvif正确地实现到他们的相机中。
现在,我有点困惑,这里的确切问题是什么,问题的解决方案是什么。
相机详细信息: -
ReadLeaf模型 - RLC-DF2011
IPNC模型 - ONVIF_IPNC
任何形式的帮助都会非常明显。
感谢。
答案 0 :(得分:1)
摄像头实现可选的HTTP摘要认证。当配置文件S相机同时实现UsernameToken和HTTP摘要认证时,如果没有提供认证,则必须向客户端提出后者。
您看到的错误可能是因为您正在调用需要身份验证的ONVIF函数而不提供凭据,因此摄像头会返回HTTP 401。
通过添加HTTP摘要身份验证的信誉来重复呼叫。如果您使用不实现摘要的相机,请准备好接收肥皂错误而不是HTTP 401。