(1) 存入用户列表 把用户名存入Application 代码如下: string User=Server.UrlDecode(Request.QueryString["User"]); Session["UserName"]=User; Application["OnlineUser"]+=Session["UserName"].ToString()+","; Response.Write(";SCRIPT;window.open('index.aspx','','left=800,scrollbars=yes,width=200,height=500');;/SCRIPT;"); (2) 建框架页(index.aspx) 10秒钟自动刷新 TOPframe页隐藏该框架,负责弹出消息框 Application[“message”]为客户留言内容,在发送留言页面对其赋值; UserNameList提取接收人变量; 代码如下: try { if(Application["message"]!="") { string UserNameList=this.Application["message"].ToString().Substring(this.Application["message"].ToString().IndexOf("对")+1,(this.Application["message"].ToString().IndexOf("说")-this.Application["message"].ToString().IndexOf("对")-1)); if (Session["UserName"].ToString()==UserNameList) { Response.Write(";SCRIPT;window.open('messagelist.aspx','','left=400,top=400,scrollbars=yes,width=400,height=300');;/SCRIPT;"); } } } catch { } mainframe页: 显示客服人员列表: 注意:在这里要判断一下,如果是客服人员则显示. 如果是客户则不显示,客户记录Session["UserName"]时,用当前时间+随机数.在客户点击相应客服人员时把其存入Application用户列表,在这里不多叙述. 代码如下: string [] abc=Application["OnlineUser"].ToString().Split(','); Label1.Text="在线人数列表:;br;"; for(int i=0;i;abc.Length;i++) { string UserList=abc.ToString(); Label1.Text+=";a href=# onclick=window.open('send.aspx?User="+UserList+"','','left=400,top=400,scrollbars=yes,width=400,height=200');;"+abc.ToString()+";/a;;br;"; } (3) 客户向客服发送消息: 此页与TOPFRAME页构成一收一发. Application["message"]=Session["UserName"]+"对"+User+"说:;br;"+message.Text; Response.Write(";script;alert('发送成功!');window.close();;/script;"); (4)接受消息与回复(messagelist.aspx) 显示接收消息后,把消息清空 if(!Page.IsPostBack) { Label1.Text=Application["message"].ToString(); User1=Application["message"].ToString().Substring(0,Application["message"].ToString().IndexOf("对")); Label2.Text=User1; Application["message"]=""; } 回复发送人: string User111=Label2.Text; Application["message"]=Session["UserName"]+"对"+User111+"说:;br;"+message.Text; Response.Write(";script;alert('发送成功!');window.close();;/script;"); 以上仅供为大家提供一个思路 一般现在的系统都用XML来实现,Application实现的效率要比WebService差很多