C#調用EAS 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接口調用時,報錯: 基礎連接已經關閉: 連接被意外關閉。

3. 問題分析

金蝶的這個接口的http 1.1, C#引用服務自動生成的是http 1.0
由引用方和目標服務接口協議不一致,導到webservice調用失敗。

4. 解決方法

在調用webservice前設置

System.Net.ServicePointManager.Expect100Continue = false;

修改 http1.1 協議存在的問題
示例代碼如下:

System.Net.ServicePointManager.Expect100Continue = false;
ConsoleApplication8.EASLoginProxyService service = new ConsoleApplication8.EASLoginProxyService();
WSContext context = service.login("user", "password", "eas", "A001", "L2", 2, string.Empty);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章