用户金蝶系统更新(安全模式)后,我方也需要讲金蝶之前引入的文件再次重新生成。
记录一下整个过程。
此方式现看仅适用于.net framework。
.net core研究后再更新上来。
此次问题解决过程:
一:重新生成文件:
1.cmd 这个地址
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools
2.输入指令
wsdl /language:c# /n:Demo /out:d:/WSjiayanapiService.cs http://61.153.205.xx:xxxx/ormrpc/services/WSjiayanapi?wsdl
注:Demo 是空间名称
WSjiayanapiService 是文件名称
http://61.153.205.xx:xxxx/ormrpc/services/WSjiayanapi?wsdl 是webservice地址
3.生成文件引入项目
二:加入安全模式
1.加入生成的文件中加入以下代码,类可重新新建一个文件
public YG_Header SessionId;
public class YG_Header: System.Web.Services.Protocols.SoapHeader
{
public string SessionId { get; set; }
}
2.在所需的方法前加入
[SoapHeader("SessionId")]
注意:这个地方的SessionId 是要和申明的类变量名称一样(public YG_Header SessionId)
3.添加eASLoginProxyService.CookieContainer = c;
(1)全局加入这个
public static CookieContainer c = new CookieContainer();//定义Cookie容器
(2)在登录处获取Session时加入这个
eASLoginProxyService.CookieContainer = c;
(3)在调用其他服务的地方再次加入
//必须和login处的c是一样的
wSjiayanapiSrvProxyService.CookieContainer = c;
4.使用:
//我声明的空间名称是WSjiayanapiService
//WSjiayanapiSrvProxyService 这是webservice的类
EASLoginProxyService eASLoginProxyService = new EASLoginProxyService();
GetProxyService(eASLoginProxyService).getorginfo("01", "");//获取组织
/// <summary>
/// 获取服务
/// </summary>
/// <param name="eASLoginProxyService"></param>
/// <returns></returns>
public WSjiayanapiService.WSjiayanapiSrvProxyService GetProxyService(EASLoginProxyService eASLoginProxyService)
{
string session = GetSession(eASLoginProxyService);//获取session
WSjiayanapiService.WSjiayanapiSrvProxyService wSjiayanapiSrvProxyService = new WSjiayanapiService.WSjiayanapiSrvProxyService();
wSjiayanapiSrvProxyService.Timeout = 86400;//设置服务时间
wSjiayanapiSrvProxyService.SessionId = new YG_Header() { SessionId = session };//设置session
wSjiayanapiSrvProxyService.CookieContainer = c;//设置金蝶安全模式
return wSjiayanapiSrvProxyService;
}
到此就全部结束啦!