我正在尝试在C#.net应用程序上使用ONVIF WSDL服务来与IP CCTV摄像机对话。
在Windows上的.NET Visual Studio中进行开发时,该应用程序可以从我的命令行正常运行。尝试在Debian上的Mono(Mono JIT编译器版本5.16.0.220(tarball Mon Nov 26 17:15:30 UTC 2018))上运行相同的.exe,我无法使该应用程序正常工作。
我认为该问题与Mono上的事实有关,我收到了应用程序无法处理的格式错误的SOAP错误。我不知道SOAP故障是否是由IP摄像机引起的,而Mono无法正确处理它(在这种情况下,我在错误处理中存在错误,并且修复了根本原因可以解决该问题),或者SOAP方面实际上很好,但是Mono只是弄乱了我的响应的解码。
下面是错误,看起来SOAP响应包含了意外的'env:faultcode'。
const mockMethod = jest.fn()
我不想发布完整的应用程序代码,因为它很长,并且不确定哪一部分是相关的。但是,我已经使用Visual Studio来添加https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl的“添加服务引用”,它是以下消息中的OnvifDeviceMgmt命名空间。
当我的应用程序启动时,我向GetDeviceInformation发出了一个简单的请求,该请求应该向该应用程序返回一些通用信息。遵循https://github.com/thephez/onvif-interface中的示例并根据此处的代码为此使用一些指导,继续进行身份验证。
我要重申一下,这在Windows上适用于FINE,但Mono的行为似乎有所不同。
关于如何进一步调试Soap错误的任何想法?我能以某种方式告诉它忽略Soap错误并将其继续传递,还是找出造成差异的原因?