我现在在做一个C# 程序,大概是这样的,有一个webservice程序,然后有客户端,用客户端去调用werservice, 客户端实现的功能是:在客户端有3个按钮,这3个必选按照1,2,3的顺序点击,不然就会报错,现在的问题是,我想同时打开2个客户端,但是这2个客户端处在不同的阶段,比如第一个用户已经按下了按钮2,但第二个用户才按下按钮1, 我如何能够把这2个用户分开? 每个用户单独执行,互不影响,我查了很多,好像是要用session,但是我不知道具体怎么用,有谁能告诉我啊,我希望要详细的代码(主要是分开用户的详细代码,包括客户端和服务端的), 谢谢了,急用啊!!!!!
2、如果安全系数很高,用session分别为不同用户增加唯一标识,如:
session["user"]="用户";//“用户”可以是用户ID来标识。
因为session为浏览器一次会话,每个用户都是独立的,至于客户端单击哪个按扭没有关系。
[WebMethod]
void Func(int Param1, string Param2)
{
...
}现在修改成:
[WebMethod]
void Func(int Param1, string Param2, string UserID)
{
...
}
这个,其实不是想象的这样,如果是这样就简单了,问题是我把id像这样传进去后,再怎么办?因为当我按下第二个按钮的时候,我要知道,这个按钮是属于哪个用户的。当我按下第三个按钮的时候,又是属于哪个用户的,如果只是这样把id传到webservice,还是办不到吧?
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;[WebService(Namespace = "gjhghjjk")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public User userinf;
public Service () { } [WebMethod]
[SoapHeader("userinf")]
public string HI(string str)
{
if (userinf.uid == "a" && userinf.pwd == "a")
{
System.IO.Directory.CreateDirectory(@"d:\"+str);
return str;
}
else
return "user info error!";
}
[SoapHeader("userinf")]
[WebMethod]
public string HelloWorld() {
if (userinf.uid == "a" && userinf.pwd == "a")
{
System.Threading.Thread.Sleep(1000*12);
return "Hello World";
}
else
return "user info error!";
}
}public class User:SoapHeader
{
public string uid, pwd;
}
按下1 session["user"] =1;
因为session 是浏览器的, 他自动区分了用户的