我需要写一个应用程序,它只接受一个网络服务地址作为输入(现在它可以只是一个简单的http地址与默认的网络服务配置生成所有典型的WCF介绍性Visual Studio示例)。然后,我需要确定服务上的约定以及约定的所有方法(以及参数的类型)。
现在,我在网上找不到任何关于如何做到这一点的例子。然而,VS2008的WcfTestClient.exe恰恰做到了这一点。你输入一个地址,它似乎会连接到它几秒钟(所以我猜它不只是解析wsdl文件来获取信息,因为这甚至不需要1秒),然后在一个整齐的列表中为你显示合同上的所有合同和方法。此外,WSDL不会向contract方法显示参数的确切类型。
我自己怎么才能以编程的方式做到这一点?如果测试应用程序只是在后台调用wsdl.exe并生成代理类,然后使用反射,那么我可能不能走这条路,因为我不能在我的程序中调用命令行.exes。如果是这样的话,我的问题就变成了,我该如何做wsdl.exe所做的事情……只有一个web服务地址,并获取这些代理类所需的所有信息。当然,在某些地方使用反射,这是我在这里的一等奖。
任何其他关于从哪里开始解决这个问题的帮助都将不胜感激。我是WCF和web服务的新手,所以请注意。
谢谢!
发布于 2011-05-18 01:16:24
看看http://blogs.msdn.com/b/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx上的这篇文章吧。它有你需要的东西,但是代码做了一些编译并动态加载新的程序集(我认为这就是WcfTestClient所做的,顺便说一句),所以如果你因为一些安全问题而不能从你的程序中运行.exe,那么对你来说也可能是一个问题。
https://stackoverflow.com/questions/6031516
复制相似问题