欢迎光临
我们一直在努力

WEB SERVICES状态管理-.NET教程,Web Service开发

建站超值云服务器,限时71元/月

web services状态管理

在默认情况下,.net下的web services是无状态的.不过可以用asp.net提供的状态管理

那就是session和application.这使得web services下状态管理变得简单了,只需使用webmethod属性的enablesession子属性就可[webmethod(enablesession=true)]

服务端代码如下:

[webmethod(enablesession= true)]

public client getclientstate()

{

cstate = (client)session["clientstate"];

if (cstate == null)

{

cstate = new client();

session["clientstate"] = cstate;

}

return cstate;

}

[webmethod(enablesession = true)]

public void click()

{

client c = this.getclientstate();

c.requsest++;

}

}

public class client

{

public int requsest;

}

先创建一个client类,用于表示客户端连接的次数,getclientstate()方法用于返回当前用户的状态.

客户端代码如下:

partial class form1 : form

{

webstate.service ws ;

webstate.client c;

public form1()

{

initializecomponent();

ws = new testwebstate.webstate.service();

ws.cookiecontainer = new system.net.cookiecontainer();

//设置cookie容器,以便代理对象能正确使用cookie来提供状态信息

}

private void button1_click(object sender, eventargs e)

{

ws.click();//每点击一次,当前用户的client state的request就++

c = ws.getclientstate();//获取状态信息

messagebox.show("you have click" + c.requsest + "times");

}

}

以上的是seesion的状态管理,下面介绍application.

服务端代码如下:

[webservicebinding(conformanceclaims = wsiclaims.bp10, emitconformanceclaims = true)]

public class service : system.web.services.webservice

{

arraylist clist;

[webmethod]

public string gethistory()

{

stringbuilder xbuider = new stringbuilder();//要添加using system.text;

clist = (arraylist)application["client"];

if (clist == null)

{

clist = new arraylist();

application["client"] = clist;

}

foreach (client c in clist)

{

xbuider.append(c.name + "" + c.request +"" + "\r\n");

}

return xbuider.tostring();

}

[webmethod]

public void click(ref client c)//这里用的是传递对象的引用

{

clist = (arraylist)application["client"];

if (clist == null)

{

clist = new arraylist();

application["client"] = clist;

}

clist.add(c);

}

}

public class client

{

public int request;

public string name;

}

客户端代码如下:

partial class form1 : form

{

webstate.client c;

public form1()

{

initializecomponent();

c = new testwebstate2.webstate.client();

c.name = "jisiki";

}

private void button1_click(object sender, eventargs e)

{

c.request++;

webstate.service s = new testwebstate2.webstate.service();

s.click(ref c);//这里用的是传递对象的引用

this.richtextbox1.text = s.gethistory();

}

}

对于web services而言,application属性总是可用的,application返回httpapplicationstate类

的一个实例,它能存储来自任何客户端的可访问的"名称/值"对.

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » WEB SERVICES状态管理-.NET教程,Web Service开发
分享到: 更多 (0)