本文主要是介绍C#引用EAS 8.2 webservice报错无效正文名称,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在做业务系统与EAS进行财务功能集成项目时,系统集成接口调用时出现以前未遇到过的问题
1. 项目环境
系统 | 技术平台 | 系统版本 | 接口方式 |
---|---|---|---|
业务系统 | .net / C# | - | webservice |
EAS | java | V8.2 | webservice |
2. 问题描述
在业务系统通过visual studio服务引用功能引用eas webservice,例如:http://100.100.100.100:6888/ormrpc/services/EASLogin?wsdl
然后webservice调用示例代码如下:
ConsoleApp2.EASLoginProxyService proxy = new ConsoleApp2.EASLoginProxyService();
ConsoleApp2.WSContext context = proxy.login("tanze", "", "eas", "A001", "L2", 0);
Console.WriteLine("sessionId : " + context.sessionId);
Console.ReadKey();
在执行webservice接口调用时,报错: 操作 login1 中的 RPC Message loginRequest1 具有无效的正文名称 login。必须为 login1
3. 问题分析
EAS 7.5的时候直接WEB饮用添加WSDL地址是可以的。
但是EAS 8.2以后,就会收到错误:
操作 login1 中的 RPC Message loginRequest1 具有无效的正文名称 login。必须为 login1
visual studio 服务引用添加自动生成的代理,与EAS 8.2 WSDL不一致,导致接口调用报错。
4. 解决方法
手动使用 wsdl.exe 工具生成webservice服务代理
wsdl.exe 的存放位置如下:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe
步骤如下:
(1)打开 vs 开发控制台 Developer Command Prompt for VS 2019
(2)在控制台中输入如下指令
wsdl /language:c# /n:Demo /out:d:/TestService.cs http://www.abc.com/webservice/test?wsdl
参数说明如下
/language:C# 指定编程语言为 C#
/n:Demo 指定名称空间为 Demo
/out: 指定文件保存路径和文件名 d:/TestService.cs
http://www.abc.com/webservice/test?wsdl 为wsdl文件路径,也可以是物理路径(如:C:/test.wsdl)
这篇关于C#引用EAS 8.2 webservice报错无效正文名称的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!