ASP.NET Core 2.1通过WSDL URL生成C#类失败求助
解决ASP.NET Core 2.1中使用WCF工具生成WSDL客户端类的报错问题
我之前也碰到过类似的情况,这个报错一般是因为WSDL元数据和ASP.NET Core 2.1自带的WCF生成工具兼容性不佳,或者元数据获取不完整导致的。给你几个可行的解决方法:
方法1:用SvcUtil.exe手动生成客户端类
Visual Studio内置的WCF工具有时候对旧版WSDL支持不够友好,手动使用官方的SvcUtil工具反而更稳定:
- 打开和你的Visual Studio版本匹配的开发者命令提示符
- 执行以下命令:
svcutil.exe https://airarabia.isaaviations.com/webservices/services/AAResWebServices?wsdl /out:AAResWebServices.cs /config:output.config - 把生成好的
AAResWebServices.cs文件直接添加到你的ASP.NET Core 2.1项目中 - 参考生成的
output.config里的配置内容,在项目的appsettings.json或者启动类里配置客户端的端点地址和绑定参数
方法2:调整WCF工具的生成选项
如果还是想用Visual Studio的可视化工具,试试调整这些选项:
- 右键你的项目 → 选择「添加」→「Connected Service」
- 选中「Microsoft WCF Web Service Reference Provider」后点击「Configure」
- 在配置窗口里,取消勾选**"Reuse types in referenced assemblies"**(或者调整重用的程序集范围)
- 进入「Advanced」设置界面,尝试把序列化方式从
DataContractSerializer切换成XmlSerializer,有些旧WSDL更适配后者 - 重新点击生成,看看是否能成功
方法3:验证WSDL的完整性
有时候WSDL里引用的外部XSD文件无法正常访问,导致元数据不完整:
- 直接在浏览器打开这个WSDL地址,查看里面的
<import>标签,确认引用的所有XSD文件都能正常打开 - 如果有无法访问的XSD,手动下载这些文件到本地,然后用本地文件路径作为参数让SvcUtil生成:
svcutil.exe AAResWebServices.wsdl localxsd1.xsd localxsd2.xsd /out:AAResWebServices.cs
方法4:适配ASP.NET Core 2.1的WCF兼容限制
ASP.NET Core 2.1对WCF的支持有一定局限性,部分旧WCF特性可能不兼容:
- 生成客户端类后,检查代码中的绑定配置,替换成ASP.NET Core支持的绑定类型(比如
BasicHttpBinding) - 确保你的项目已经安装了必要的NuGet包:
Microsoft.AspNetCore.Wcf和System.ServiceModel.Http
内容的提问来源于stack exchange,提问作者Ahmad1334




