我有两个webservice,
public string HelloWorld() { return "Hello World"; }
public string HelloWorld(string name) { return "Hello World:"+name; }
在我的程序里已经添加服务1的引用,
现在我用下面的方法想实现动态调用服务2的方法
1 private void Form1_Load(object sender, EventArgs e) 2 { 3 ServiceReference1.WebService1SoapClient client = 4 new ServiceReference1.WebService1SoapClient( 5 "WebService1Soap", "http://localhost:2769/WebService2.asmx" 6 ); 7 client.HelloWorldCompleted += 8 new EventHandler<ServiceReference1.HelloWorldCompletedEventArgs>(client_HelloWorldCompleted); 9 client.HelloWorldAsync("aa"); 10 } 11 12 void client_HelloWorldCompleted(object sender, ServiceReference1.HelloWorldCompletedEventArgs e) 13 { 14 MessageBox.Show(e.Result); 15 }
问题是,我能够访问到服务2的方法,
但是我的参数却传不过去,我想请教怎么样把这个参数传过去,还是这种方法根本就行不通动态调用服务2的方法?还有就是WebService1SoapClient构造函数的那几个参数的含义我也不大清楚,我是根据appconfig猜他们的含义,所以请各位前辈指导下,先谢谢了
契约不一致,你应该把 WebService1Soap 改成 WebService2Soap (这是自动生成的配置文件和代理类的标识),也就是说客户端用Service1的WSDL来构建请求,让后发给了 Service2,因为你的 Service1的请求不包含 name 参数,自然 Service2 不会收到此参数。
@一抹、思乡泪: 老大,你能不能仔细的读我写的文字—— (这是自动生成的配置文件和代理类的标识),除了配置文件,还有自动生成的代理类。你不明白我的意思,就请你先去把SOAP,WSDL,代理类的概念搞清楚了再来问问题,否则就是我直接给你写代码,帮你把工作做了。
client.HelloWorldAsync("aa");
你只能提示这边没有警告,或者是报错?
楼上说的好啊,这个本来就不是太大问题,自己找些资料调试下,应该能解决。给你提供的只是一个思路。