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