Blazor项目添加WebReference遇异常,咨询List_UdM调用及正确添加路径
嘿,这个问题我之前帮开发者处理过不少,来给你理清楚怎么解决:
一、先解决拆分后的List_UdM调用问题
当你通过Connected Services添加后,方法被拆成request/requestBody/response/responseBody,这是因为它用了WCF的现代生成逻辑,把传统SOAP方法拆成了更规范的请求响应结构。你可以按以下步骤调用:
第一步:构造请求对象
先创建对应的请求类实例,把需要的参数塞进RequestBody里:// 实例化请求对象 var udmRequest = new LABservice.List_UdMRequest(); // 构造请求体(如果原方法需要参数的话) udmRequest.RequestBody = new LABservice.List_UdMRequestBody(); // 假设原方法需要传一个Id参数,这里对应设置 udmRequest.RequestBody.Id = 123;第二步:调用服务并获取结果
实例化服务客户端,异步调用方法后从响应体里取出返回值:// 注意用using管理客户端生命周期 using var serviceClient = new LABservice.YourServiceClient(); // 异步调用方法 var udmResponse = await serviceClient.List_UdMAsync(udmRequest); // 从ResponseBody里拿到原方法的返回结果 var udmList = udmResponse.ResponseBody.List_UdMResult; // 接下来就可以用udmList做业务逻辑了
如果你的项目用的是同步模式(不推荐Blazor用同步,会阻塞UI),可以直接调用serviceClient.List_UdM(udmRequest),但异步是更优的选择。
二、关于正确添加WebReference的途径
你怀疑Connected Services不对是完全正确的——它默认添加的是WCF服务引用,而你要的传统WebReference(针对ASMX旧服务的)需要用专门的方式添加:
方法1:通过Visual Studio图形界面添加
- 右键你的Blazor项目 → 选择「Add」→「Connected Services」
- 在弹出的窗口里,点击「More services...」(不同VS版本可能显示为「Find more services」)
- 找到「Add Web Reference」选项(如果找不到,去VS的「Tools」→「Get Tools and Features」,安装「ASMX Web Services and WCF Support」组件)
- 输入你的ASMX服务的完整URL(比如
http://xxx/YourService.asmx?wsdl),点击「Go」 - 确认服务信息后,设置命名空间为
LABservice,点击「Add Reference」即可
方法2:手动用wsdl.exe生成
如果VS里找不到图形化选项,可以用命令行工具生成:
wsdl /namespace:LABservice /out:LABservice.cs http://你的服务地址/YourService.asmx?wsdl
把生成的LABservice.cs文件添加到Blazor项目里,然后安装System.Web.Services这个NuGet包(因为.NET Core/.NET 5+默认没包含这个旧组件)。
内容的提问来源于stack exchange,提问作者Amodio d c
相关产品推荐
相关产品推荐

