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

如何在Visual Studio 2022 .NET 6中获取旧ASMX服务的强类型实体?

在.NET 6项目中获取ASMX服务完整强类型实体的解决方案

方法一:使用SvcUtil.exe命令行生成代理类

这是最可靠的方式,能确保完整生成WSDL中的所有强类型:

  • 打开Visual Studio 2022的开发者命令提示符(通过开始菜单搜索“Developer Command Prompt for VS 2022”)
  • 执行以下命令,替换占位符为你的服务信息:
    svcutil.exe http://your-asmx-service-url.asmx?wsdl /language:C# /out:AsmxServiceProxy.cs /namespace:Your.Target.Namespace
    
    • http://your-asmx-service-url.asmx?wsdl:ASMX服务的WSDL地址
    • AsmxServiceProxy.cs:生成的代理类文件名
    • Your.Target.Namespace:代码中要使用的命名空间
  • 将生成的AsmxServiceProxy.cs文件添加到.NET 6项目中
  • 安装必要的NuGet包:System.ServiceModel.Http和System.ServiceModel.Primitives

方法二:调整VS服务引用的生成配置

如果通过VS向导添加引用后类型缺失,可修改配置补全:

  • 右键项目中的服务引用,选择配置服务引用
  • 在弹出窗口中:
    1. 确认“序列化程序”选择XmlSerializer(ASMX服务默认使用该序列化器,WCF默认的DataContractSerializer可能遗漏部分类型)
    2. 勾选生成强类型集合
    3. 点击“高级”按钮,确保“生成所有可能的类型”相关选项已启用
  • 保存配置后,右键服务引用选择更新服务引用

方法三:使用旧版WCF Web Service连接方式

通过Connected Services的旧版选项添加引用,兼容ASMX服务的类型生成:

  • 右键项目中的Connected Services,选择添加服务引用
  • 在窗口中选择WCF Web Service(旧版),点击“下一步”
  • 输入ASMX服务的URL,点击“Go”加载元数据
  • 指定命名空间后,点击“高级”,确认勾选生成强类型的相关选项,完成添加

注意事项

  • 先验证ASMX服务的WSDL完整性:直接在浏览器访问http://your-asmx-service-url.asmx?wsdl,确认所有需要的实体类型都已定义
  • 若存在命名空间冲突,可在SvcUtil命令中用/namespace:原WSDL命名空间,你的目标命名空间参数手动映射

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:31:11