宝哥软件园

ASP .网使用应用与会议对象写的简单聊天室程序

编辑:宝哥软件园 来源:互联网 时间:2021-09-10

ASP .网中有两个重要的对象,一个是应用对象,一个是会议对象。

应用:记录应用程序参数的对象,该对象用于共享应用程序级信息。

会话:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象。

说实话,写了快一年的ASP.NET应用程序对象还真没怎么用过。看了看书,根据这两个对象的特性写了一个简单的聊天室程序。真的是非常的简陋。

我的思路是,有两个页面默认页和聊天室页,页面布局如图:

默认页:

聊天室页:

思路大概就是,在默认页登录时,输入的昵称存入会议对象当中,并跳转到聊天室页,并把会议中存的键为"昵称"存入应用对象中去。遍历应用对象,给左侧的列表框添加在线人的昵称。利用应用对象在会话_开始和会话结束方法中对键为"计数"进行1,-1用于记录当前在线人数。在利用应用对象键为"内容"存储聊天记录。

下面上代码

Global.asax:

复制代码代码如下:受保护的作废申请_开始(对象发送方,EventArgs e){应用程序[' count ']=0;应用程序['内容']='聊天记录 n ';}

受保护的无效会话开始(对象发送者,事件参数){应用程序lock();应用程序['计数]=(int)应用程序['计数']1;申请UnLock();}受保护的无效会话结束(对象发送者,事件参数){应用程序lock();应用程序['计数]=(int)应用程序['计数']-1;申请UnLock();}

Default.aspx:

复制代码代码如下:受保护的作废按钮_登录_点击(对象发送者,EventArgs e) { if(!字符串IsNullOrEmpty(textbox _昵称。文本){会话['昵称']=文本框_昵称。文字;}回应。重定向(' ChatRoom。aspx’);}

聊天室。aspx:

复制代码代码如下:受保护的无效页面_加载(对象发送者,事件参数e) { label_count .文本='当前在线人数为应用程序['计数']。'' ToString()'人;if(!IsPostBack) { if (Session['昵称']!=null){ 0应用程序。添加(会话['昵称']。ToString(),会话['昵称']);}文本框_记录.文本=应用程序['内容']。ToString();}列表框_用户名.项目。清除();应用程序中字符串。目录){ if(!字符串等于('内容')!字符串。等于('计数')!字符串。等于('名称){ listbox_usernames .添加新的列表项(应用程序[字符串]。应用程序[字符串]。ToString()));} } }

受保护的作废按钮_发送_点击(对象发送者,EventArgs e) { if (Session['昵称']!=null){ 0应用程序['内容']=(会话['昵称']。' ToString()'说:“textbox_sendmsg .文本 n ');文本框_记录。文本=应用程序['内容']。ToString();} }

受保护的无效按钮_退出_点击(对象发送者,事件参数){应用程序。移除(会话['昵称']。ToString());应用程序['计数]=(int)应用程序['计数']-1;回应。重定向(' Webcounter。aspx’);}

这样简单的聊天室就完成了,在本地使用的时候,在一个浏览器下好像不会创建新的会话,需要在不同浏览器下登录才能看到效果。

这里也要注意一点就是,在退出聊天室的时候,要把应用键为"昵称",即当前会话["昵称"]的值给移动掉。否则刷新列表框的时候,会发现退出的昵称还存在。

同时也要把键为"计数"的应用对象-1,也许你要问,不是在会话结束方法中已经-1了么?这块我还真不确定,可能是有两个原因,不知道是哪个?希望明白的朋友给予指点。

1.会话尚未过期。我刚刚在应用程序中杀死了密钥为session的对象,但是我不知道真正的session。将不调用会话结束方法。(但也许你会问,把当前会话[“昵称”]对象留空不是可以吗?我试过这个,但是count没有-1。) 2.会不会是因为我在两个不同的本地浏览器上做这个聊天操作?

在一些特殊情况下,使用应用对象确实对我们有帮助,所以我不需要谈论session,这绝对是我们经常使用的。

更多资讯
游戏推荐
更多+