首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

再问超奇怪难题:winform异步调用webservice的Completed事件在有些机器上每次都被触发,在有些机器每次都没有触发。但是如果同步调用webs,

2012-01-05 
再问超奇怪难题:winform异步调用webservice的Completed事件在有些机器上每次都被触发,在有些机器每次都没

再问超奇怪难题: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 的功能

热点排行