每个应用程序可以包含一个特殊的目录(/bin)和两个特殊的文件(Web.config和Global.asax)
Global.asax文件的使用:
作用:处理应用程序范围内的事件,声明应用程序范围的对象
每个ASP.NET应用程序都支持特定数量的事件,以下是一些最重要的事件:
Application_BeginRequest |
每个发送服务器的请求引发该事件 |
Application_End |
在应用程序的所有实例结束之前引发 |
Application_EndRequest |
在每个发送服务器的请求结束之前引发 |
Application_Error |
应用程序中未被处理的错误引发 |
Application_PreSendRequestContent |
将内容发送给浏览器之前引发 |
Application_Start |
在创建第一个应用程序之后立刻引发该事件,这个事件保证只引发一次 |
Init |
在创建每个应用程序实例后立即引发该事件,有可能引发多次 |
修改Global文件,会重新启动应用程序,应用程序中所存储的状态信息将会丢失
Application_Start在应用程序生命周期内肯定只发生一次,他是进行全局变量初始化 的理想位置,例如,希望从数据库中获取一个产品列表并将它放置到Cache对象中
Init对需要在某个应用程序的实例的整个生命周期内使用的任何变量或对象进行初始化
在Init子例程中进行变量的初始化,类似于将条目添加到应用程序状态中,重要的差异是被添加到应用程序状态中的条目可以跨多个应用程序实例保留
Application_PreSendRequestContent 选择一个广告并发送到浏览器,因为该事件在内容被发送到浏览器之前执行,因此在这个子例程中输出内容可以保证此内容显示在页面的底部
Application_BeginRequest:伪静态URL,利于搜索引擎SEO
因为当网站的url地址里有get的传递参数的时候,搜索引擎会认为这些网站是同一个网页,就不会进行蜘蛛程序的爬行
例如:
www.****.com?id=1
www.****.com?id=2
搜索引擎就会认为这两个其实是一个
示例:
string url = Context.Request.AppRelativeCurrentExecutionFilePath; //能够获得相应的地址的相对路径
Regex reg = new Regex(@"03\d\d");
if(reg.IsMatch(url))
{
Context.RewritePath("/Demo/ListView1.aspx");
}
Application_Error 可以将错误信息写入错误日志里
以上方法可以直接在Global.ascs文件里面写