asp.net 动态调用web service的方法
一般我们在asp.net项目里面使用web service的方法都是现在项目里面添加一个web service的引用,让visual studio帮我们生成代理类,在web.config里面动态配置要访问的web service url。但是在一个新项目需求里面,我在一个方法里面产生了一个参数,然后根据这个参数调用所有符合这个参数方法的web service,web service的url并不确定,第三方网站只要做出了符合这个参数调用的方法并在网站上注册,我的方法就会去调用它,因此前面说的先添加web service引用的方法就不是很好用了,我们需要在编程时动态调用web service。
google/baidu了一下,基本上有三种:
1. ajax的ScriptManage中的services配置节
http://blog.csdn.net/greki/archive/2006/11/10/1376931.aspx
2. 使用CodeDom在内存中编译(或者编译后保存于本地)
http://www.dezai.cn/Article_Show.asp?ArticleID=7868
http://hi.baidu.com/stockzh/blog/item/d2881e4bd1e232f683025ca6.html
就是不知道多人访问情况下会不会对效率有影响。
大致过程:
- 从目标 URL 下载 WSDL 数据。
- 使用 ServiceDescription 创建和格式化 WSDL 文档文件。
- 使用 ServiceDescriptionImporter 创建客户端代理类。
- 使用 CodeDom 动态创建客户端代理类程序集。
- 利用反射调用相关 WebService 方法。
3. 命令行编译
大致过程:
- 使用 wsdl.exe 生成客户端代理类型源代码。
- 使用 csc.exe 生成客户端代理程序集。
- 使用反射调用。