最近遇到怪事了.
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";