欢迎光临
我们一直在努力

ASP.NET事件小探讨-.NET教程,Asp.Net开发

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

今天早上做了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应用程序层次及对应的事件,有时可

能有对问题的错误见解,希望能有高手指教。

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

相关推荐

  • 暂无文章