再问超奇怪难题:winform异步调用webservice的Completed事件在有些机器上每次都被触发,在有些机器每次都没有触发。但是如果同步调用webs
再问超奇怪难题:winform异步调用webservice的Completed事件在有些机器上每次都被触发,在有些机器每次都没有触发。但是如果同步调用webservice,所有机器都成功返回。
具体情况如下:
有2台pc机:client001,client002, 同样的环境和同样的代码.
(.net 2.0 framework + WinXP professional 环境)
client001 调用异步webservice,每次都失败(completed event不触发,代码也没有报任何错误); 调用同步webservice,每次都成功返回.
client002 调用异步webservice,每次都成功返回; 调用同步webservice,每次都成功返回.
问题是client001 为什么会调用异步,每次都失败???
到底是:
1. windowXP 问题?
2. .net framwork 问题?
3. config文件配置问题?
4. 网络配置问题?
5. 还是其他软硬件问题?
这是我的一些研究线索:
1 我比较了很多这2台机器的各种参数和配置情况,也没有查出什么不同来。
2 我也跟踪了web service server端的反应,不管是client001还是client002,每次调用不管成功失败,server端的代码是肯定执行到的。
我的测试代码很简单,就是个HelloWorld例子。(如下)
//这是客户端代码 client.cs
//异步调用webservice
private void button6_Click(object sender, EventArgs e)
{
webservicetest.Service service = new webservicetest.Service();
service.Url = "http://d-sjn-khathi/webservicetest/Service.asmx ";
service.HelloWorldCompleted += new HelloWorldCompletedEventHandler(service_HelloWorldCompleted);
service.HelloWorldAsync();
}
//异步调用webservice的事件处理
void service_HelloWorldCompleted(object sender, HelloWorldCompletedEventArgs e)
{
label1.Text = e.Result;
}
//这是同步调用webservice
private void button7_Click(object sender, EventArgs e)
{
webservicetest.Service service = new webservicetest.Service();
service.Url = "http://d-sjn-khathi/webservicetest/Service.asmx ";
label1.Text = service.HelloWorld();
}
//这是web service 服务器端代码 service.cs
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]