ASP.NET 编程笔记(C#)

本文探讨了在WEB页面中实现持久化Socket连接的方法,利用Session管理连接生命周期,确保多客户端共享同一连接。同时,文章还介绍了ASP.NET项目的文件夹结构及编译问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Web页面的Socket编程

WEB页面的生存期仅在其装载过程中,一旦装载完毕,WEB页面内定义的所有变量都将被销毁,如果直接添加一个Socket连接,则该连接在装载完毕后也会被断开,要想持Socket连接,必须有一个一直运行的线程保持,该线程的生存期至少应保持到该页面被关闭之前。

这样只需要在页面装载时创建一个线程,在此线程内进行Socket连接,通过该Socket与服务器通讯。该线程的生存期如何控制呢?也就是应该何时销毁。应该按照我们上面的要求进行销毁,恰好,Session正好满足我们的要求。Session在该页面活动时一直有效,关闭该页面时立即失效,通过Session就可以设计程序了。

首先,页面每次调入我都检查对应的Session是不是为空,如果为空则创建一个线程,进行Socket连接,连接成功则在Session中保存该线程的一个引用,以后通过该引用访问线程,同时也保存Socket的一个引用,这样以后从Session中读入该引用,然后通过该引用进行通讯。当Socket连接失败或被服务器端断开时,则退出该线程,并释放Session,下次连接时再重新创建线程,重新连接。

发现这样会有一个很有趣的现像,网页中的Socket所连接的服务器只允许一个Socket连接,而该网页可以在很多机器上访问。为什么呢?因为Session是保存在服务器端的,而该页面的程序保存的只有一个Session,实际上在各个客户端的浏览器上访问的是同一个线程,同一个Socket连接,所以,多个客户端共享同一个连接。但是做实验室只能一个人使用,所以在访问该页面时需要进行一定的控制,如果其它客户端已经连接,则不打开该页面。

2. ASP.NET 项目文件夹结构

昨天在改ASP.nET的一个工程时发现一个很奇怪的问题,我为一个类添加了新方法,另一个地方调用了该方法,但编译时编译错误,没有该方法,找开元数据的定义一看,的确没有该方法,方法的定义还是跟原来的一样,代码没有更新,好像该文件没有重新编译一样。重启VS和重启电脑都不起作用,然后我就新建一个类,看它如何工作。

创建新类后,提示程序文件必须在App_Code文件夹中,于是创建了一个App_Code文件夹,然后把那些没有关联到页面的程序文件都移到了该文件夹下,编译,OK!

ASP.NET 2.0的文件夹及用途列表如下:
(1) /App_Code 用于保存类、WSDL和类型化的文件。
(2) /App_Data 保存应用程序的数据库。
(3) /App_Themes 保存主题文件 (.skin等)
(4) /App_GlobalResources 资源文件夹,存放字符表等

也不知道什么时候我的ASP.NET升级了,编译的时候还有警告说某些方法也过时了,让使用一些新的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值