1.问题
调用sap的webservices,由于程序环境无法直接在项目中引用地址。故采用,在服务器拿到wsdl文件,后生成c#本地的形式。
问题一:如何生成代理类
问题二:生成代理类,编写程序。在正式环境使用时,却发现无法找到地址,无法使用
问题三:sap时间类型生成代理类后自动转化为c#的datetime类型,实际使用时出错(因为sap时间类型不完全对等于c#datetime)
问题四:服务在本机和测试机可以部署 在正式服务器无法部署
2.解决步骤
1.访问所提供地址,得到xml文件,改后缀为wsdl文件。(注:sap形式的webservices,地址后不用加“?wsdl”)
在vs命令行里输入: wsdl /l:cs /n:*** /o:*** wsdlFilePath 回车即可得到cs文件(只需记住wsdl l,n,o即可)
/l: 全称为language,为所要生成的语言,这里选择“cs”;
/n: 全称为NameSpace,为所要生成代理类的命名空间;
/o: 全称为OutPut,为所要输出代理类的路径;
,
2.无法找到地址,经查。
在输入地址时使用的为类似 http://ip:port/Details,但在生成代理类后文件的地址信息为http://域名:port.Details
或者地址直接为http://域名:port.Details 应用程序以后再部署到服务器上时,可能该服务器无法访问到该域名。
解决:C:\Windows\System32\drivers\etc下的host文件,加入本机域名映射信息。如下图所示
3.生成的代理类下,对象有以下属性 private System.DateTime zJSJField; 该字段其实只有日期没有时间,不完全对等于c#的DatetTime,在使用时产生错误。
解决:手动修改该类型为字符串类型。(应该有三处需要修改(成员变量,getset访问器,字段remarks))即可成功
4.服务使用topshelf和quartz,无法在服务器部署,报错信息为没有权限。
解决:需要企业版的杀毒软件对服务的exe文件授权信任,或者暂时关闭掉安全软件,即可正确安装。