ASP.NET事件小探讨

asp.net

今天早上做了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应用程序层次及对应的事件,有时可
能有对问题的错误见解,希望能有高手指教。

时间: 2024-12-24 02:08:45

ASP.NET事件小探讨的相关文章

asp.net事件传递及wpf路由代理实例

asp.net事件传递及wpf路由代理实例 asp.net,事件传递,wpf路由 事件,传递 一篇关于.net事件传递及wpf路由代理实例程序代码,作者写得非常的详细,有需要了解事件传递及wpf路由代理的朋友不防进入参考参考. 这几天做的wpf项目,涉及到弹出窗口更新父级ui,同时弹出窗口需要处理一定的逻辑后调用父级窗口的函数继续执行. 这里就用到了.net事件传递.ui事件更新.wpf的路由事件. 1.什么是.net事件传递(事件链) 在.NET程序设计时,常常将一些辅助类的事件封装绑定到一个

aspx-关于asp.net的小问题,GridView总是调用不出来英文,只显示连接。

问题描述 关于asp.net的小问题,GridView总是调用不出来英文,只显示连接. <div class ="info"> <asp:GridView ID="GridView1" Runat="server" align="center" AutoGenerateColumns="False" BorderStyle="None" DataKeyField=&qu

javascript-IE浏览器attachEvent事件小问题

问题描述 IE浏览器attachEvent事件小问题 <!DOCTYPE html> 事件处理 事件处理 var btn=document.getElementById("mybtn"); btn.attachEvent("click",function(){alert("hello");}); attachEvent()不是IE事件处理程序么,为什么浏览器显示不支持该方法呢,哎,头都大了![IE浏览器调试结果](http://img

ASP.NET常用小技巧_实用技巧

今天为大家介绍6个ASP.NET常用技巧,使用操作简单,具有很高的实用性,记得收藏哦 1.跟踪页面执行  设置断点是页面调试过程中的常用手段,除此之外,还可以通过查看页面的跟踪信息进行错误排查以及性能优化.ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="True"属性即可:设置断点是页面调试过程中的常用手段,除此之外,还可以通过查看页面的跟踪信息进行错误排查以及性能优化.ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="T

ASP中用好“小甜饼”

凡是上过网的朋友都知道Cookies,即俗称"小甜饼"的这种网络技术.Cookies是服务器发送到客户机上的一小段文本句柄,网站通过向浏览者发送Cookies的方法,把一些特定信息储存在用户的本地硬盘上,等待用户再次访问网站时可以从硬盘上读出储存的信息,从而完成一些动作,比如一些允许访问者定制页面的网站就可以用Cookies技术"记"住用户的定制爱好:而一些电子商务网站也普遍地运用Cookies. 许多人担心Cookies的应用会带来安全问题,其实这种忧虑大可不必,

ASP.NET事件回传机制

在ASP.NET里面我们最喜欢做的事情是拖动一个Button然后双击,然后输入代码就可以了.这个称之为事件回传机制,属于软件开发的体系范畴,但并不属于Web开发的范畴,因为Web是基于TCP/IP协议的,但是TCP/IP协议确是一个无状态的协议,那么ASP.NET是如何引入事件回传的呢? 首先请新建一个网站,然后添加一个WebUserControl,命名为:EventModule.如下: 现在在该EventModule里面拖入一个一个Button和3个Label,如下: 然后双击该Button,

asp.net validateRequest原理探讨

问题描述 1.当我们输入非法字符(如:"<")时,asp.net会返回一个错误,这是由validateRequest控制的.在asp.net的管道处理中,第一步就是validateRequest,但验证失败并不会立即返回错误,它给Request对象的Form对象添加了一个异常,下图是调试的时候,在BeginRequest事件中截的:这种异常不会马上报出来,但你一调用这个属性时,就会马上报出来.还有,当我调试时查看了此对象,这个异常就消失了,原本应返回客户端的错误变成了正常的返回.

关于执行IIS与设计ASP程序的小技巧

iis|程序|技巧|设计|执行     1.平均分配前.后端的程序执行负载 ASP的目的并非要取代前端网页的Script程序,相反,前后端应该相互协调工作:可以由前端执行的工作,就不要增加后端的负担.别忘了,一个WEB服务器可能必须同时回应数十位.数百位.甚至数千位使用者的浏览,如果能将逻辑处理工作平均分布在前.后端,就可以让后端的WEB服务器以更快的时间回应前端的需求,或者是替更多的使用者服务. 举例来说,像检查表单数据正确性或完整性的工作,应该以前端的Script来完成,因为如此一来,既可以

asp.net的小问题,请高手赐教!

问题描述 ServerErrorin'/li'Application.--------------------------------------------------------------------------------ConfigurationErrorDescription:Anerroroccurredduringtheprocessingofaconfigurationfilerequiredtoservicethisrequest.Pleasereviewthespecifi