解决webservice 异步调用在有的pc客户端是好的,但是在有的pc客户端上用就不行的难题 (内详,附解决方案)

博客讨论了一个奇怪的问题,即在某些PC客户端上,使用.NET 2.0进行webservice异步调用时,回调函数不会返回,但同步调用正常。作者通过跟踪、日志分析和网络数据包捕获,发现可能是第三方软件修改或损坏了Winsock2导致的。解决方案包括检查和卸载可能导致问题的软件。
摘要由CSDN通过智能技术生成

最近遇到怪事了.

webservice 异步调用 begininvoke/endinvoke 在有的pc客户端是好的,但是在有的pc客户端上用就不行.问题出在service.begininvoke调用以后,回调函数不返回.

但是,在所有的客户端测试同步调用方式,所有的机器都是可以正常返回数据的.

(.net 20 环境)

请问,这是不是客户端某些环境没设置好造成的???
有没有人以前遇到这样的问题啊????
谢谢!!!!


源代码
//Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using asynwebservicecalltest.eMailServices;

namespace asynwebservicecalltest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

      //异步调用webservice 
      private void button1_Click(object sender, EventArgs e)
        {
                BeginGetCSRStatusTest(CRStatsCalculatedTest);
           
        }

       
        private void BeginGetCSRStatusTest(AsyncCallback callback)
        {
            Service service = new Service();
            service.Url = "http://d-sjn-gwadev.com/Reporting/Service.asmx";
           
            service.BegingetCSRStats("1000","junxu3", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),callback, null);
           
        }

        private string EndGetCSRStatusTest(IAsyncResult res)
        {
            Service service = new Service();
            service.Url = "http://d-sjn-gwadev.com/Reporting/Service.asmx";

            System.Text.StringBuilder CSRStatusDisplay = new System.Text.StringBuilder();
            CSRStat[] CSRStatArray = service.EndgetCSRStats(res);
            foreach (CSRStat stat in CSRStatArray)
            {
                CSRStatusDisplay.Append(stat.Activity).Append("-").Append(stat.Count).Append("  ");
            }
            return CSRStatusDisplay.ToString();

        }

       
        void CRStatsCalculatedTest(IAsyncResult res)
        {
            ShowCRStats(EndGetCSRStatusTest(res));
           
        }

        delegate void ShowCRStatsDelegate(string stats);

        void ShowCRStats(string stats)
        {
            if (this.InvokeRequired == false)
            {
                label1.Text = stats;
            }
            else
            {
                ShowCRStatsDelegate showCRStats = new ShowCRStatsDelegate(ShowCRStats);
                this.BeginInvoke(showCRStats, new object[] { stats });
            }
        }

      //同步调用webservice
        private void button2_Click(object sender, EventArgs e)
        {
            StringBuilder CSRStatusDisplay = new StringBuilder();
            CSRStat[] CSRStatArray = GetCSRStatus();
            foreach (CSRStat stat in CSRStatArray)
            {
                CSRStatusDisplay.Append(stat.Activity).Append("-").Append(stat.Count).Append("  ");
            }
            label1.Text = CSRStatusDisplay.ToString();
        }


        private static CSRStat[] GetCSRStatus()
        {
            CSRStat[] CSRStatArray = null;

            Service service = new Service();
            service.Url = "http://d-sjn-gwadev.com/Reporting/Service.asmx";
      
           
           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值