读书人

再问超奇怪难题:winform异步调用webs

发布时间: 2012-01-05 22:36:54 作者: rapoo

再问超奇怪难题: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)]


public class Service : System.Web.Services.WebService
{
public Service () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

[WebMethod]
public string HelloWorld() {
return "Hello World ";
}

}


我还有一贴,也是问同样的问题的。
http://community.csdn.net/Expert/TopicView.asp?id=5423199

谁能帮我解决,两帖的分都给他!!!
先谢了!



[解决办法]
我的都成功执行 呵呵
建议你用sniffer抓一下包
[解决办法]
比较直接的办法 不建议你用
label1.Text = e.Result;
来测试是否准确执行了
最好来个MessageBox

因为label1.Text 默认应该是this.Label1.Text
异步未必100%识别this
[解决办法]
MessageBox.Show(e.Result); 试试 呵呵

[解决办法]
service.Url = "http://d-sjn-khathi/webservicetest/Service.asmx ";
异步的时候,你在URL后面随便+个随机参数44看
------------
我记得ajax中,再请求的时候,会出现这样类似的错误
[解决办法]
StatusCode=100
应该是表示还有数据要传输,客户端应该上传东西
但似乎从lz的监测数据中没有发现有POST上去的内容
[解决办法]
up
[解决办法]
我怀疑是系统的问题。但具体的我也不清楚!
或者说问题的机器是不是中毒或都说什么的?
[解决办法]
"也就是说,response是到达客户端的,但是没有到达.net中。
"

会不会是有(病毒)防火墙软件进行了过滤
[解决办法]
看来就和中了木马程序是一样的
360安全卫士什么的,也有提供修复lsp 的功能

读书人网 >C#

热点推荐