• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

ASP.NET事件小探讨

发布: 2007-6-30 23:38 | 作者: admin | 来源: | 查看: 28次 | 进入软件测试论坛讨论

领测软件测试网 今天早上做了ASP.NET页面计数器的实验,用的是简单的文本文件来存储计数器的数值(
实际是以Byte类型值进行的存储),原理代码可见我以前发的《简单计数器实现程序》。

今天的任务是把原来WinForm中的文件读写放入到ASP.NET的BehindCode中,这就会出现
些许问题。

问题一:文件路径
在ASP.NET的BehindCode中写文件路径就不能因为文件在这个应用程序的目录下直接写文
件名来调用了。
例:
以前使用WinForm编程的时候,如果文本文件Count.txt跟程序的可执行文件在一个目录
下可直接使用FileStream fs=File.Open("Count.txt",FileMode.Open);来对文件进行读
取。
而在ASP.NET中,Web应用程序的路径是"虚路径",意思是没有映射为系统当前应用程序
默认路径(系统当前默认路径应该为C:\windows\system32,原因是此路径下面有Web应用
程序可供调用的丰富的Win32API)。那么虚拟路径的根是存储在什么地方呢?应该是在I
IS的配置文件中,在C#中这个路径就是通过Server.MapPath()函数来映射的。
例:
如果Count.txt文件在此Web应用程序的目录下,可以通过Server.MapPath("../Count.tx
t");来映射到这个文件。注:直接写文件名会找不到此文件,显示的是文件无法读取的
信息。

问题二:
Web应用程序事件问题
其实ASP.NET的通讯及访问模型中有三个层次
第一个层次就是Application,是Web应用程序层
此层次的变量周期为整个Application,不过在Application_Start和Application_End两
个事件中运行的代码,只有在应用程序开始或结束的时候才能进行(服务器启动/关闭或
者强制IIS把此应用程序启动/关闭的时候),因此在这两个事件中写计数器代码是无用
的。
第二个层次是Session,是Web应用程序的一个通信层
一次与用户的通信(从以一个IP访问应用程序开始,到这个IP与应用程序断开或超时断
开)对计数器来说是最有价值的体现,也是一个页面计数器的功能。
不过问题也随之出现了:
Session的Session_Start和Session_End事件是在一次通讯的开始和结束才被激发的。这
样如果在Session_Start实件中写代码的话,只有一次通讯开始时访问的页面上才有计数
器的显示,而在刷新后页面显示计数器的部分就不会再显示了,怎么办?不用着急请继
续往下看。
第三个层次是Page层,是每个页面即Web Document的控制对象层。
我们知道了一个Web页面有一个Page层,我们就会了解,一个页面调出的时候将会调用Pa
在此事件中添加计数器计数的代码,计数器就会因为页面刷新一次而增加一,这是我们
不愿意看到的。
怎么办?
很简单,在Session_Start中写计数器计数的代码,在Page_Load中写计数器显示的代码
,这样就可以实现我们需要的功能了。

希望通过这篇文章,能够帮助初学者理解这几个Web应用程序层次及对应的事件,有时可
能有对问题的错误见解,希望能有高手指教。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网