ASP.NET 编程笔记(C#)
来源:互联网 发布:远走高飞网络走红小伙 编辑:程序博客网 时间:2024/06/05 02:33
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升级了,编译的时候还有警告说某些方法也过时了,让使用一些新的方法。
- ASP.NET 编程笔记(C#)
- c#(asp.net)杂谈笔记
- c#(asp.net)杂谈笔记
- [ASP.NET学习笔记之八]ASP.NET控件编程
- ASP.NET高级编程笔记1点
- ASP.NET数据库高级编程笔记(1)
- ASP.NET数据库高级编程笔记(2)
- ASP.NET数据库高级编程笔记(3)
- 《ASP.NET 2.0编程珠玑》阅读笔记
- asp.net网络编程学习笔记
- ASP.Net 3.5学习笔记(C#)一
- ASP.Net 3.5学习笔记(C#)二
- ASP.Net 3.5学习笔记(C#)三
- ASP.Net 3.5学习笔记(C#)四
- ASP.Net 3.5学习笔记(C#)五
- ASP.Net 3.5学习笔记(C#)六
- ASP.Net 3.5学习笔记(C#)七
- ASP.NET、Java、ASP、C#、VB......编程所有视频教程
- 创建Active控件
- JavaScript调用C#代码
- 在多线程中调用WinForm(C#) (转载)
- .NET自定义控件——与属性相关的设计时特性
- C#编程笔记
- ASP.NET 编程笔记(C#)
- 访问IIS元数据库错误
- Mapxtreme java IntraServletContainerRenderer实现
- cite宏包的使用
- Blaze和Java通信例子step by step
- W77E58串口2问题
- 讨论A1200防盗功能开发
- 徒步新纪录--从植物园到北理
- 结婚请人好烦人