You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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.WcfSystem.ServiceModel.Http

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

火山引擎 最新活动