.NET之ASP Web Application快速入门(3)(转载)
2024-07-10 13:05:07
供稿:网友
文件global.asax
除了编写ui(use interface:用户界面)以外,我们还可以在web
application中添加"application"级别的控制逻辑代码以及事件触发程
序。这些代码不会去操作产生ui,并且基本上不会响应于单独的页面请
求,它们负责的是处理高级别的application事件,包括
application_start、application_end、session_start和
session_end。这些控制逻辑代码位于web
application所在虚拟目录结构根目录下的global.asax文件中,
asp.net自动地解析这个文件并编译为动态.net框架类。这个类扩充了
httpapplication基类,当位于application名字空间内的任意资源或
url被首次访问时,它就被创建。
global.asax文件本身经过了设置,任何关于它的直接url请求都会被自
动拒绝,从而保证了外部用户无法下载它并浏览其内容。
application 或 session作用范围内的事件
我们可以在global.asa文件中编写方法以定义有关httpapplication基
类的事件触发程序,方法的命名要匹配于字符串"application_事件名
称"。比如,请看下面使用vb、c#以及jscript三种语言编写的代码:
c#
<script language="c#" runat="server">
void application_start() {
// application startup code goes here
}
</script>
vb
<script language="vb" runat="server">
sub application_start()
’ application startup code goes here
end sub
</script>
jscript
<script language="jscript" runat="server">
function application_start() : void {
// application startup code goes here
}
</script>
如果事件触发代码需用输入另外的名字空间,我们可以在.aspx页面中编
写类似如下代码的输入标识:
<%@ import namespace="system.text" %>
下面的例子图解了application、session 和request 的生存期:
application1.aspx
[]点击这里运行例程]
| []查看源代码]
页面首次打开时,将激活application和session的onstart事件。关于
这些事件触发程序,请看下面使用vb、c#以及jscript三种语言编写的代
码:
c#
void application_start() {
response.write("application is starting...");
}
void session_start() {
response.write("session is starting...");
session.timeout = 1;
}
vb
sub application_start()
response.write("application is starting...")
end sub
sub session_start()
response.write("session is starting...")
session.timeout = 1
end sub
jscript
function application_start() : void {
response.write("application is starting...");
}
function session_start() : void {
response.write("session is starting...");
session.timeout = 1;
}
每次请求发生时,都会激活beginrequest 和endrequest 事件。比如,
当页面被刷新时,来自beginrequest、endrequest
和page_load 方法的信息将显现出来。注意,当放弃当前的session时
(点击"end this session"按钮),将产生一个新session,接着再次
触发session_onstart事件。