Global.asax文件—ASP.NET细枝末节(1)

说明

Global的解释是全局的、全球的。

clipboard

 

Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法。你可以使用这个文件实现应用程序安全性以及其它一些任务。

Global.asax使用频率不是特别高,属于细枝末节的小知识点。不说了,来我们一起研究一下这个东西吧。

创建和预览

1.添加

同web.config一样,通常情况下Global.asax文件名是固定的。如果您没有非得要改名的理由,不建议您修改。

你改了,系统不懂了。(这句话用《从前慢》的曲子唱!)

clipboard[1]

2.看看里面写了什么

clipboard[2]

 

把网站信息记录在txt文件中

1.把各种应用启动信息写入日志文件中(就是一个txt)

 

 1 public class Global : System.Web.HttpApplication
 2     {
 3         //自从服务器启动起来,网站第一次被访问的时候Application_Start执行
 4         protected void Application_Start(object sender, EventArgs e)
 5         {
 6             File.AppendAllText("d:\\1.txt", DateTime.Now+"Application_Start\r\n");
 7         }
 8  
 9         //Session启动时
10         protected void Session_Start(object sender, EventArgs e)
11         {
12             File.AppendAllText("d:\\1.txt", DateTime.Now + "Session_Start\r\n");
13         }
14  
15         //当一个请求过来的时候
16         //html等静态文件是iis直接把文件给到浏览器,不经过asp.net引擎的处理。
17         //所以不会调用Application_BeginRequest方法
18         protected void Application_BeginRequest(object sender, EventArgs e)
19         {
20             //即使用户访问一个不存在的页面,那么Application_BeginRequest也会被调用
21  
22             File.AppendAllText("d:\\1.txt", DateTime.Now + "Application_BeginRequest:"+
23                 Context.Request.RawUrl + "\r\n");
24         }
25  
26         protected void Application_AuthenticateRequest(object sender, EventArgs e)
27         {
28  
29         }
30  
31         //程序中发生未处理异常
32         protected void Application_Error(object sender, EventArgs e)
33         {
34             File.AppendAllText("d:\\1.txt", DateTime.Now + "Application_Error:"+
35                 Context.Error + "\r\n");
36         }
37  
38         //(*)Session过期(只有进程内Session,也就是InProc过期的时候才会调用Session_End)
39         protected void Session_End(object sender, EventArgs e)
40         {
41             File.AppendAllText("d:\\1.txt", DateTime.Now + "Session_End\r\n");
42         }
43  
44         protected void Application_End(object sender, EventArgs e)
45         {
46             File.AppendAllText("d:\\1.txt", DateTime.Now + "Application_End\r\n");
47         }
48    }
View Code

UrlRewrite(URL重写)

1.UrlRewrite啥意思?

啥叫URL重写,简单说举个例子,

例如http:// www.a.com/viewPerson.aspx

这个页面可以接受一个请求参数   id。

请求时,就可能出现这样的网址。

http:// www.a.com/viewPerson.aspx?id=11

http:// www.a.com/viewPerson.aspx?id=12

..............

URL重写后

http:// www.a.com/viewPerson-11.aspx

http:// www.a.com/viewPerson-12.aspx

这样的网址,就和上面带请求参数的网址 一致了。

注意不是 http:// www.a.com/viewPerson-11.aspx取代了http:// www.a.com/viewPerson.aspx?id=11,

而是http:// www.a.com/viewPerson.aspx-11.aspx会指向http:// www.a.com/viewPerson.aspx?id=11。

2.URL重写的好处

URL重写可以让自己的网址变得更“漂亮”,消除掉又长的、又乱的请求参数的影响。

当然这些只是强迫症的心里。

URL重写最关键的意义在于SEO方面。

3.思路

每次浏览器访问网站的时候,都会触发Application_BeginRequest这个方法。

即使用户访问一个不存在的页面,那么Application_BeginRequest也会被调用

所以我们如果想做URL重写的话,在这个方法里操作就好了。

4.做法

protected void Application_BeginRequest(object sender, EventArgs e)

        {

            //Url重写:UrlRewrite。ViewPerson-1.aspx

            Match match = Regex.Match(Context.Request.Path, @"^/ViewPerson\-(\d+)\.aspx$");

            if (match.Success)

            {

               string id = match.Groups[1].Value;

               Context.RewritePath("/ViewPerson.aspx?id="+id);

            }

        }

结尾

还有一些教材,用Application_Start 做人数统计。

别搭理他。

 

 

 

 

posted @ 2015-03-19 22:08  大黑兔  阅读(835)  评论(1编辑  收藏  举报