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)

發佈了21 篇原創文章 · 獲贊 23 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章