You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Visual Studio WSDL.exe转换ONVIF WSDL文件遇问题求助

解决VS2015 wsdl.exe转换ONVIF WSDL到C++的两类问题

问题1:本地转换时提示数据类型缺失

原因

media.wsdl依赖ONVIF的核心Schema文件(如定义VideoSource的onvif.xsd),单独转换单个WSDL文件时,wsdl.exe无法自动加载依赖的Schema。

解决方案

  1. 下载所有依赖文件:
    打开本地的media.wsdl,查找所有<import>标签,比如:
    <import namespace="http://www.onvif.org/ver10/schema" schemaLocation="http://www.onvif.org/ver10/schema/onvif.xsd"/>
    
    把这些schemaLocation对应的文件(如onvif.xsd)下载到和media.wsdl同一目录。
  2. 执行带所有依赖文件的转换命令:
    将所有依赖的WSDL和XSD文件作为参数传入,示例命令:
    wsdl /language:CPP /protocol:SOAP12 media.wsdl onvif.xsd
    
    注意:如果还有其他依赖的文件(如其他WSDL或XSD),都需要添加到命令行参数中。

问题2:通过URL转换时SSL/TLS通道创建失败

原因

VS2015自带的wsdl.exe默认使用较旧的TLS版本(如TLS 1.0),而ONVIF服务器已停止对旧版TLS的支持,导致HTTPS请求被拒绝。

解决方案

有两种可行方式:

  • 方式1:手动下载文件后本地转换
    直接从ONVIF官网下载所需的media.wsdl及所有依赖的Schema文件到本地,然后按照问题1的解决方案执行本地转换命令,完全规避HTTPS请求问题。
  • 方式2:修改注册表强制启用TLS 1.2
    通过修改Windows注册表,让.NET Framework(wsdl.exe基于.NET运行)默认使用TLS 1.2:
    1. 打开注册表编辑器(regedit.exe)。
    2. 定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319,添加DWORD类型的SchUseStrongCrypto,值设为1。
    3. 若为64位系统,额外定位到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319,添加相同的键值。
    4. 重启电脑后,再执行URL转换命令即可。

内容的提问来源于stack exchange,提问作者harrywolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:33:32