我们知道调用webservice接口的一种方式是直接在客户端程序集上右键添加web引用。但是当我们的开发环境是保密的,离线的这时候我们在添加web引用的时候就搜不到服务端webservice了,这时候我们想在本地编码,怎么办呢?
解决方法:
可以让服务端webservice开发人员在浏览器浏览webservice地址,在地址后加上?wsdl,即可以在浏览器上看到wsdl文件,在浏览器上点击另存为,将wsdl文件保存成一个asmx的文件。将wsdl文件通过外网转内网,或者U盘的方式转到本地。转到本地之后将wsdl文件的后缀改为.wsdl结尾(例如:webservice.asmx改为webservice.asmx.wsdl)。在电脑-“开始”中找到某个版本的visualStudio开发平台文件夹打开visualstudioTools,打开“(VSXXXX(2015))开发人员命令提示”可以进入Dos控制台.粘贴命令
wsdl /language:c# /n:TestDemo /out:d:/Temp/TestService.cs D:/Temp/TestService.wsdl
------------------------------------------------------------------------------------------------------------------------------
/out:后是将wsdl文件保存成代理类,代理类放的位置。需要有d:/Temp文件夹,否则会提示找不到路径。TestService.cs文件不用建,工具会将文件自动生成。
D:/Temp/TestService.wsdl是wsdl文件在本地的地址,可以直接将文件拖拽到dos控制台中。回车即可将wsdl文件转换为代理类。
生成的代理类:
上图的URL可以改,当服务端webservice改了url的时候,可以直接在代理类里面改此处的url,可以说比添加web引用更加灵活。
可以看到生成的代理类中也有方法的异步操作以及异步完成后的事件,可以说和使用“添加web引用”的方式来编码是一模一样的。