ASP.Net 内置对象

简介: ASP.Net 内置对象

Response对象

Response对象主要用于将数据从服务器发送回浏览器。

2、Response对象的常用属性及说明


属性


说明


Buffer


获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个相应之后将其发送。


Cache


获取Web页的缓存策略,如过去时间、保密性、变化字句等。


Charset


设定或获取HTTP的输出字符编码


Expires


获取或设置在浏览器上缓存的页过期之前的分钟数


BufferOutput


获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送。


Cookies


获取当前请求的Cookie集合。


IsClientConnected


传回客户端是否仍然和Server连接


SuppressContent


设定是否将HTTP的内容发送至客户端浏览器。若为true,则网页将不会传至客户端。


BufferOutput属性

该属性用于获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送。语法如下:


Public bool BufferOutput{get;set;}


数型值:如果缓冲了到客户端的输出,则为true;否则为False。默认为True。


protected void Page_Load(object sender, EventArgs e) {

Response.BufferOutput = true;


Response.Write("测试");


}


IsClientConnected属性

该属性用于获取一个值,通过该值指示客户端是否仍连接在服务器上。


语法如下:public bool IsClientConnected{get;}


属性值:如果客户端当前仍在连接,则为true,否则为false。例:


protected void Page_Load(object sender, EventArgs e)


       {

           if (Response.IsClientConnected)


               Response.Redirect("WebForm1.aspx");


           else


               Response.End();


           }


Response常用的方法及说明

AddHeader


将一个HTTP头添加到输出流


AppendToLog


将自定义日志信息添加到IIS日志文件。


Clear


将缓冲区的内容清除。


End


将目前缓冲区中所有的内容发送至客户端,然后关闭。


Flush


将缓冲区所有的数据发送至客户端。


Redirect


将网页重新导向另一地址。


Write


将数据输出到客户端


WriteFile


将制定的文件直接写入HTTP输出流


Redirect方法 该方法用于将网页重新导向另一个地址。语法如下:

Public void Redirect(string url)


参数url:客户端用来定位请求资源的URL


说明:在构建Web页面时,需要用户导向另外一个页面。例如,用户查询资料时就需要跳转,这时可以使用Page类的Redirect属性中的一个对象Redirect帮助完成工作。


例:用户从登陆页面进入网站主页时,输入合法的用户名和密码之后,通过调用Response对象的Redirect方法就可以跳转到网站主页面。代码如下:Response.Redirect(“Index.aspx”);


(2)Write方法


该方法用于将数据输出到客户端,语法如下:Response.Write(“输出字符串”);


例:<head runat=”Server”>


             <title>Response test</title>


      </head>


      <body>


      <%


            For ( int i=0;i<50;i++){ Response.Write(“X”);}


%>


</body>


(3)WriteFile方法


该方法用于将指定的文件直接写入HTTP输出流。语法如下:public void WriteFile(string filename);参数filename:要写入HTTP输出的文件名。例:


Response.WriteFile(Server.MapPath(@”TextFile.txt”);


Request对象

Request对象,可称为请求对象。该对象是HttpRequest类的一个实例,用于提供当前页请求访问,其中包括标题、CooKie、查询字符串等,用户可以使用此类来读取浏览器已经发送的内容。当用户打开浏览器,并从网站请求web页时,Web服务器就会收到一个请求,其中包含用户、用户的计算机、页面以及浏览器的相关信息,这些信息将被完整的封装,并在Request对象中利用他们。以上这些信息都是通过Request对象一次性提供的。

Request对象的常用属性及说明

ApplicationPath


获取服务器上ASP.NET应用程序虚拟应用程序的根目录路径


Browser


获取或设置有关正在请求的客户端浏览器的功能信息


ContentLength


指定客户端发送的内容长度(以字节计)


Cookies


获取客户端发送的Cookie集合


FilePath


获取当前请求的虚拟路径


Files


获取客户端上载的文件集合


Form


获取窗体变量的集合


Item


从Cookies、Form、QueryString或ServerVariables集合获取指定的对象


Params


获取QueryString、Form、ServerVariables和Cookies项的组合集合


Path


获取当前请求的虚拟路径


QueryString


获取HTTP查询字符串变量集合


UserHostAddress


获取远程客户端IP主机地址


UserHostName


获取远程客户端DNS名称


Browser属性 该属性用于获取或设置有关正在请求的客户端浏览器的信息。语法如下:public HttpBrowserCapabilies Browser{get;set;}

属性值:列出客户端浏览器功能的HttpBrowserCapabilities对象。例:


 protected void Page_Load(object sender, EventArgs e)


       {

          Response.Write("浏览器使用的平台:"+Request.Browser.Platform+"<br>"+"浏览器类型:"+Request.Browser.Type+"<br>"+"浏览器版本:"+Request.Browser.Version);


       }


QueryString属性

该属性用于获取HTTP查询字符串变量的集合、


语法如下:public NameValueCollection QueryString{get;}


属性值:NameValueCollection,包含由客户端发送的查询字符串变量的集合。


Request对象的常用的方法及说明

方法


说明


MapPath


将当前请求的URL中的虚拟路径映射到服务器上的物理路径


SaveAs


将HTTP请求保存到磁盘


MapPath方法

该方法用于接收一个字符串类型的参数,并返回当前文件所在的实际路径。该方法主要应用在需要使用实际路径的位置。例如,建立数据源连接是,必须制定完整的路径,这是就可以使用MapPath方法将其取回。语法如下:


Public string MapPath(string virtualPath)


参数virtualPath:当前请求的虚拟路径(绝对路径或相对路径)。


返回值:由virtualPath指定的服务器物理路径。


例如,下面的代码用来取得页面Default.aspx的物理路径。


String str=Request.MapPath(“Default.aspx”);


(2)SaveAs方法


该方法用于将HTTP请求保存到硬盘上,在调试过程中非常有用。


语法如下:


Public void SaveAs(string filename.bool includeHeaders)


参数说明:filename:物理驱动器路径。


IncludeHeaders:一个布尔值,该值指定是否将HTTP头保存到磁盘。例:


protected void Page_Load(object sender, EventArgs e)


       {

           Request.SaveAs(Server.MapPath("TextFile1.txt"), true);


           }


Response应用

例:当程序运行时,在页面Default.aspx中的TestBox文本框输入一个值,单击搜索按钮,将Testbox文本框中的值传到WebForm1.aspx页面的地址栏中。

tt.png

tt.png


主要代码:


1、Default.aspx


protected void btnSearch_Click(object sender, EventArgs e)


  {

           Response.Redirect("WebForm1.aspx?id=" + txt.Text);


       }


2、WebForm1.aspx


protected void Page_Load(object sender, EventArgs e)


   {

           Response.Write("地址栏传值id为:" + Request.QueryString["id"]);


       }


Application对象

Application对象,可称之为记录应用程序参数的对象,主要用于共享应用程序集信息。Application对象用于共享应用程序集信息,即多个用户共享一个Application对象。在第一个用户请求ASP.NET文件时,将启动应用程序并创建Application对象。一旦Application对象被创建,它就可以共享和管理整个应用程序的信息。在应用程序关闭之前,Application对象将一直存在。所以,Application对象是用于启动和管理ASP.NET应用程序的主要对象。

Application对象的常用属性及说明

属性


说明


AllKeys


返回全部Application对象变量名到一个字符串数组中


Count


获取Application对象变量的数量


Item


允许使用索引或Application变量名传回内容值。


Count属性 该属性用于获取Application对象变量的数量

语法如下:public override int Count{get;}属性值:集合中的Item对象数,默认值为0。例:


protected void Page_Load(object sender, EventArgs e)


       {

           Application["app1"] = "app1";


           Application["app2"] = "app2";


           Response.Write("Application对象的数量为:" + Application.Count);


       }


Item属性 该属性可以重载,有两种格式,分别通过索引和名称来获取单个Application对象的值。语法如下:

Public Object this[int index]{get;}//index集合中对象的数字索引


Public Object this [string name]{get;set;}//集合中的对象名


例:


protected void Page_Load(object sender, EventArgs e)


       {

           Application["app1"] = "app1";


           Application["app2"] = "app2";


           Response.Write(Application["app1"].ToString());


           Response.Write(Application[1].ToString());


            }


Application对象的常用方法及说明

方法


说明


Add


新增一个Application对象变量


Clear


清除全部Application对象变量


Lock


锁定全部Application对象变量


Remove


使用变量名移除一个Application对象变量


RemoveAll


移除全部Application对象变量


UnLock


解除锁定的Application对象变量


Add方法 该方法用于将新变量添加到Application集合中。语法如下:

Public void Add(string name,Object value);


参数说明: name:要添加到Application对象中的变量名。Value:变量的值。例:


Application.Add(“mr”,”mr”); Application.Add(“mrsoft”,”mrsoft”);


(2) Lock方法 该方法用于锁定全部的Application对象变量。语法如下:


Public void Lock();


例如:统计在线人数时,就应该先对Application对象家锁,以防止因为多个用户同时方位页面而造成并行。常用格式如下:


Application.Lock();Application(“变量”)=”表达式”;Application.UnLock();


说明:Lock方法可以阻止其他用户修改存储在Application对象中的变量,以确保在同一时刻仅有一个用户可以修改和存取Application变量。如果用户没有明确使用Unlock方法,则服务器将在页面文件结束或超出时即解除对Application对象的锁定。Unlock方法可以使其他客户端使用Lock方法锁住Application对象后,修改存储在该对象中的变量。如果未显式地调用该方法,Web服务器将在页面文件结束或超出后解锁Application对象。


Remove方法 该方法用于指定变量从Application集合中移除。语法如下:

Public void Remove(string name)


参数Name:要从Application对象中移除的变量名。


例如:下面的代码将mr的应用程序变量从Application集合中移除。


Application.Remove(“mr”);


如果压移除Application集合中所有变量,可以直接调用其RemoveAll方法。代码如下:Application.RemoveAll();


Application对象常用的事件

Application_Start事件,在首次创建新的会话之前发生,只有Application和Server内置对象可使用。在Application_Start事件中引用Session、Request

或Response对象将导致错误。由于Application对象是多用户共享的,因此它与Session对象有着本质的区别;同时Application 对象不会因为一个甚至全部用户离开而消失,一旦建立了Application对象,他就会一直存在直到网站关闭或者该Application对象被卸载,这通常需要很长时间。由于Application对象创建之后不会自己注销,因此一定要特别小心地使用。另外,它会占用内存,要避免降低服务器对其他工作的相应速度。中止Application对象有3中方法,分别为服务被终止,Global.asax文件被改变或者该Application对象被卸载。例:


  protected void Application_Start(object sender, EventArgs e)


       {

           Application["Name"] = "sgusauyfdsg";


            }


Application_End事件 在应用程序退出时用于Session_End事件之后发生,只有Application和Server内置对象可使用。Application_End事件只有在服务中止或者Application对象卸载时才会触发。如果单独使用Application对象,该事件可以通过Application对象再利用Unload事件卸载时进行触发。一个Application_End事件肯定发生在Session事件之后。Application_End事件触发唯一一个脚本程序,它存在于Global.asax文件中。注:若果希望服务中止或者Application对象卸载时执行某些操作,可以在Application_End事件中编写相应的代码。

Session对象

Session对象用来存储跨网页程序的变量或者对象。该对象只对单一网页使用者,也就是服务器会为连接的客户端分配各自的Session对象,不同的客户端无法相互存取。当超过设置的有效时间时,Session对象就会消失。与Application对象一样,Session对象也是Page对象的成员,因此可直接在网页中使用。使用Session对象存放信息的语法如下:

Session[“变量名”]=“内容”;


Session对象常用的属性及说明

属性


说明


Contents


获取对当前会话状态对象的引用


Item


获取或设置会话值


TimeOut


设置Session对象的有效时间,默认值为20分钟


Contents属性 获取当前会话状态对象的引用。语法如下:

Public HttpSessionState Contents{get;}


属性值:当前的HttpSessionState


例:


protected void Page_Load(object sender, EventArgs e)


       {

           Session["id1"] = "id1e";


           Session["id2"] = "isd2";


           foreach (string str in Session.Contents)


           {

               Response.Write(Session[str].ToString());


               Response.Write("<br/>");


           }  


       }


(2)TimeOut属性


该属性用于获取并设置在会话状态提供程序终止会话之前各请求之间所允许的时间(以分钟为单位)。


语法:public int TimeOut{get;set;}


属性值:超时时限(以分钟为单位)


注:更改Timeout属性的值也可以在Web.Config中,使用sessionSate配置元素的timeout属性来设置Timeout属性,也可以使用程序代码直接设置Timeout属性值。Timeout属性不能超过525600(1年)的值。


例:  <sessionState mode="InProc" timeout="30">


Session对象常用的方法

属性


说明


Abandon


结束当前会话,并清除会话中的所有信息。


Add


用于向Session对象集合中添加一个新项


CopyTo


将会话状态值的集合复制到一维数组中


Clear


清除全部的Session对象变量,但不结束会话


Clear 该方法用于清除全部Session对象变量。

语法如下:public void Clear()


例:Session.Clear();


Add 该方法用于向Session对象集合中添加一个新项。

语法如下:public void Add(string name,Object value);


参数说明:name 要添加到Session对象集合中的名称


Value要添加到Session对象集合中的项的值。


例:Session.Add(“test”,”test文本”);


Session对象应用:Session对象的用途有很多,如存储变量,判断用户是否登录等。例:

(1)登录页面

tt.png

代码:


protected void btnLogin_Click(object sender, EventArgs e)


   {

       if (txtName.Text == "mr" && txtPwd.Text == "mrsoft")


       {//使用Session变量记录用户名


                   Session["UserName"] = txtName.Text;


//使用Session变量记录用户登录系统的时间                               Session["TimeLogin"] = DateTime.Now;


           Response.Redirect("~/UserPage.aspx");//跳转到主页


       }


       else


       {

           Response.Write("<script>alert('登录失败!请返回查找原因');location='Login.aspx'</script>");


       }


   }


(2)Session对象记录用户登录名及登录时间

tt.png


 protected void Page_Load(object sender, EventArgs e)


   {

       Response.Write("欢迎用户" + Session["UserName"].ToString() + "登录本系统!<br>");


       Response.Write("您登录的时间为:" + Session["TimeLogin"].ToString());



}


CooKie对象

Cookie对象用于保存客户端浏览请求的服务器页面,也可用它放非敏感信息,信息保存的时间可以根据用户的需要进行设置。并非所有的浏览器支持Cookie,并且数据信息以文本形式保存在客户端计算机中。

Cookie对象常用的属性及说明

属性


说明


Clear


清除所有的Cookie


Expires


设定Cookie变量的有效时间,默认为100分钟,若设置为0,则实时删除Cookie变量。


Name


取得Cookie变量的名称


Value


获取或设置Cookie变量的内容值


Path


设置与当前Cookie一起传输的虚拟路径


Expires属性 该属性用于设置Cookie对象的两个常用属性。语法如下:

Public Datatime Expires{get;set;}


属性值:Cookie的过去时间(在客户端)


例:  protected void Page_Load(object sender, EventArgs e)


       {

           HttpCookie cookie = new HttpCookie("UserName");


           cookie.Value = "明日科技";


           cookie.Expires = DateTime.Now.AddMinutes(20);


          }


Path属性 用于设置与当前Cookie一起传输的虚拟路径

语法如下:public string Path{get; set;}


属性值:要与前Cookie一起传输的虚拟路径。默认为当前请求的路径。例:


 HttpCookie cookie = new HttpCookie("UserName");


       cookie.Value = "明日科技";


       cookie.Expires = DateTime.Now.AddMinutes(20);


       Response.Cookies.Add(cookie);


       Response.Write(Request.Cookies["UserName"].Path);


Cookie对象的常用的方法及说明

方法


说明


Equals


确定指定Cookie是否等于当前的Cookie


ToString


返回此Cookie对象的一个字符串表示形式


ToString方法 表示当前Object 的String。语法如下:

Public virtual string ToString()


返回值:string,表示当前的Object


Equals方法 用于确定指定的Object是否等于当前的Object。语法如下:

Public virtual bool Equals(Object obj)


返回值:如果指定的Object等于当前的Object,则为true,否则为false


例:protected void Page_Load(object sender, EventArgs e)


   {

       //声明一个HttpCookie实例cookie1


       HttpCookie cookie1 = new HttpCookie("userName1");


       cookie1.Value = "明日科技";  //赋值给cookie1


       //声明一个HttpCookie实例cookie1


       HttpCookie cookie2 = new HttpCookie("UserName2");


       cookie2.Value = "明日科技";                //赋值给cookie1


       Response.Cookies.Add(cookie1);           //添加cookie1


       Response.Cookies.Add(cookie2);           //添加cookie2


       if(Equals(Request.Cookies["userName1"].Value, Request.Cookies["userName2"].Value))


           Response.Write("Cookie值相等"); //两个Cookie对象的值是否相等


       else


           Response.Write("Cookie值不相等");


}


Server对象

Sever对象定义了一个与Web服务器相关的类,用于访问指定服务器上的资源。

Server对象的常见属性及说明

属性


说明


MachineName


获取服务器的计算机名称


ScriptTimeout


获取或设置请求超时值(以秒计)


MachineName属性 该属性用于获取服务器的计算机名称。语法如下:

Public string MachineName{get;}


属性值:本地计算机的名称


例:Response.Write(Server.MachineName.ToString());


ScriptTimeout 该属性用于获取或设置请求超时值。语法如下:

Public int ScriptTimeout{get;set;}


           属性值:请求超时值设置


Server对象常用的方法及说明

方法


说明


HtmlDecode


对已被编码以消除无效HTML字符的字符串进行编码


HtmlEnCode


对要在浏览器中显示的字符串进行编码


MapPath


返回与Web服务器上的指定虚拟路径相对应的物理文件路径


UrlDecode


对字符串进行编码,该字符串为了进行HTTP传输而进行编码并在URL中发到服务器


UrlEncode


编码字符串,以便通过URL从Web服务器到客户端进行可靠的HTTP传输


MapPath方法   用于返回与Web服务器上的指定虚拟路径相对的物理文件路径。语法如下:public string MapPath(string path)

参数path: web服务器的虚拟路径    


例:Response.Write(Server.MapPath("Default.aspx"));


HtmlEncode方法 用于对字符串进行HTML编码,并返回已编码的字符串。语法如下:public string HtmlEncode(string s)

      例:Server.HtmlEncode(“<B>浏览器中字符串</B>”+”<br/>”);


//结果:<B>浏览器中字符串</B>


HtmlDecode方法 用于字符串进行HTML编码并返回已编码的字符串

语法如下:public string HtmlDecode(string s)


参数:s 要舅妈的HTML字符串


例:Server.HtmlEncode(“<B>浏览器中字符串</B>”+”<br/>”);//结果:浏览器中字符串


综合应用:


例1,统计IP地址的登录次数

tt.png

后台代码:


   protected void Page_Load(object sender, EventArgs e)


   {

       if (!IsPostBack)


       {

           int lastVisitCounter;


           if (Request.Cookies["lastVisitCounter"] == null)


               lastVisitCounter = 0;


           else


               lastVisitCounter = int.Parse(Request.Cookies["lastVisitCounter"].Value);


           lastVisitCounter++;


           HttpCookie aCookie = new HttpCookie("lastVisitCounter");


           aCookie.Value = lastVisitCounter.ToString();


           aCookie.Expires = DateTime.MaxValue;


           Response.Cookies.Add(aCookie);


           txtSum.Text = lastVisitCounter.ToString();


       }


   }


   protected void Button1_Click(object sender, EventArgs e)


   {

       if (Request.Cookies["lastVisitCounter"] == null)    


           txtSum.Text = "1";    


       else


       {

           HttpCookie aCookie = Request.Cookies["lastVisitCounter"];


           txtSum.Text = Server.HtmlEncode(aCookie.Value);


       }


}


例2、获取浏览器的信息


 protected void Page_Load(object sender, EventArgs e)


   {

       //获取浏览器的平台、类型和版本信息


       lblinfo.Text = "浏览器使用的平台:" + Request.Browser.Platform + "<br>"


       + "浏览器类型:" + Request.Browser.Type + "<br>" + "浏览器版本:"


       + Request.Browser.Version;


}


例3、输出文本文件的内容


protected void Page_Load(object sender, EventArgs e)


   {

       if (!IsPostBack)


       {

           StreamReader sr = File.OpenText(Server.MapPath("桃花仙人.txt"));


           string rl;


           while ((rl = sr.ReadLine()) != null)


           {

               Response.Write(rl+"<br>");


           }


           sr.Close();


       }


}


例4、创建一个网站,使用Response对象的Redirect方法实现页面跳转并传递参数。

tt.png

Default.aspx页面


 protected void Button1_Click(object sender, EventArgs e)


   {

       //获取用户名和密码


       string name = txtUserName.Text.Trim();


       string pwd = txtPwd.Text.Trim();


       string strsql = "select count(1) from tb_user where userName='" + name + "' and userPwd='" + pwd + "'";


       SqlConnection conn =new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["conn"].ToString());


       conn.Open();


       SqlCommand cmd = new SqlCommand(strsql, conn);


       int flag = int.Parse(cmd.ExecuteScalar().ToString());


       conn.Close();


       if (flag > 0)


       {

           Session["users"] = name;


           Response.Redirect("admin.aspx");


       }


       else


       {

           ClientScript.RegisterStartupScript(this.GetType(), "", "alert('用户名或密码错误');", true);


       }


   }

tt.png

Admin.aspx


protected void Page_Load(object sender, EventArgs e)


   {

       if (!IsPostBack)


       {

           if (Session["users"] != null)


           {

               lblinfo.Text = "恭喜你,登录成功";


           }


       }


   }


例5、验证码


起始页Default2.aspx


<html xmlns="http://www.w3.org/1999/xhtml">


<head runat="server">


   <title>无标题页</title>


</head>


<body>


   <form id="form1" runat="server">


   <div>


          <asp:Image ID="Image1" runat="server" ImageUrl="~/Default.aspx"/>


       <br />  


       请输入正确的验证码:


       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>


       <asp:Button ID="Button1" runat="server" Text="确定" οnclick="Button1_Click"  />


   </div>


   </form>


</body>


</html>


 protected void Button1_Click(object sender, EventArgs e)


   {

       string checkCode = Request.Cookies["CheckCode"].Value.ToString().ToLower();


       if (checkCode.Equals(TextBox1.Text.ToLower()))


       {

           Response.Write("<Script>alert('验证码输入正确')</Script>");


       }


   }


Default.aspx后台代码


private string GenerateCheckCode()


   {

       int number;


       char code;


       string checkCode = String.Empty;


       Random random = new Random();


       for (int i = 0; i < 4; i++)


       {

           number = random.Next();


           if (number % 2 == 0)


               code = (char)('0' + (char)(number % 10));


           else


               code = (char)('A' + (char)(number % 26));


           checkCode += code.ToString();


       }


       HttpCookie cookie = new HttpCookie("CheckCode", checkCode);


       cookie.Expires = DateTime.Now.AddSeconds(30);


       Response.Cookies.Add(cookie);


       return checkCode;


   }


   protected void Page_Load(object sender, EventArgs e)


   {

       string checkCode = GenerateCheckCode();


       System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 20.5)), 22);


       Graphics g = Graphics.FromImage(image);


       try


       {

           //生成随机生成器


           Random random = new Random();


           //清空图片背景色


           g.Clear(Color.White);


           //画图片的背景噪音线


           for (int i = 0; i < 2; i++)


           {

               int x1 = random.Next(image.Width);


               int x2 = random.Next(image.Width);


               int y1 = random.Next(image.Height);


               int y2 = random.Next(image.Height);


               g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);


           }


           Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));


           System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);


           g.DrawString(checkCode, font, brush, 2, 2);


           //画图片的前景噪音点


           for (int i = 0; i < 100; i++)


           {

               int x = random.Next(image.Width);


               int y = random.Next(image.Height);


               image.SetPixel(x, y, Color.FromArgb(random.Next()));


           }


                      g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); //画图片的边框线


           System.IO.MemoryStream ms = new System.IO.MemoryStream();


           image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);


           Response.ClearContent();


           Response.ContentType = "image/Jpeg";


           Response.BinaryWrite(ms.ToArray());


       }


       finally


       {

           g.Dispose();


           image.Dispose();


       }


   }


 例6、统计网站的访问量

tt.png

Default.asp前台代码


<table align="center" cellpadding="0" cellspacing="0" class="style1">


   <tr>


       <td>


           <table align="center" cellpadding="0" cellspacing="0" class="style2">


               <tr>


                   <td class="style3">


                       &nbsp;</td>


                   <td>


                       &nbsp;</td>


               </tr>


               <tr>


                   <td class="style3">


                       &nbsp;</td>


                   <td>


                       &nbsp;</td>


               </tr>


               <tr>


                   <td class="style3">


                       &nbsp;</td>


                   <td>


                       您是第<%=Application["counter"]%>位访问者&nbsp;</td>


               </tr>


           </table>


       </td>


   </tr>


</table>


Global.aspx代码


<%@ Application Language="C#" %>


<script runat="server">


   void Application_Start(object sender, EventArgs e)


   {// 在应用程序启动时运行的代码


       int count = 0;


       System.IO.StreamReader srd;


      string file_path = Server.MapPath("counter.txt");  //取得文件的实际路径


       srd = System.IO.File.OpenText(file_path); //打开文件进行读取


       while (srd.Peek() != -1)


       {


           string str = srd.ReadLine();


           count = int.Parse(str);


       }


       srd.Close();


       object obj = count;


     Application["counter"] = obj; //将从文件中读取的网站访问量存放在Application对象中


   }


   void Application_End(object sender, EventArgs e)


   {//  在应用程序关闭时运行的代码


       int Stat = 0;


       Stat = (int)Application["counter"];


       string file_path = Server.MapPath("counter.txt");


       System.IO.StreamWriter srw = new System.IO.StreamWriter(file_path, false);


       srw.WriteLine(Stat);


       srw.Close();


   }      


   void Application_Error(object sender, EventArgs e)


   {


       //在出现未处理的错误时运行的代码


   }


   void Session_Start(object sender, EventArgs e)


   {// 在新会话启动时运行的代码


       Application.Lock();


       int Stat = 0;


       Stat = (int)Application["counter"]; //获取Application对象中保存的网站总访问量


       Stat += 1;    //数据累加


       object obj = Stat;


       Application["counter"] = obj;


       string file_path = Server.MapPath("counter.txt");//将数据记录写入文件


       System.IO.StreamWriter srw = new System.IO.StreamWriter(file_path, false);


       srw.WriteLine(Stat);


       srw.Close();


       Application.UnLock();


   }


   void Session_End(object sender, EventArgs e)


   {//在会话结束时运行的代码。


       // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为


       // InProc 时,才会引发 Session_End 事件。如果会话模式


       //设置为 StateServer 或 SQLServer,则不会引发该事件。


   }    


</script>


例7、统计当前在线人数。当新用户访问网站时,会触发Session_Start事件,当用户有效期失效时,会触发Session——End事件。所以在这两个事件统计在线人数是比较科学的。


Default.aspx前台代码


<table align="center" cellpadding="0" cellspacing="0" class="style1"


       style="background-image: url('网站在线访问人数统计.png')">


       <tr>


           <td>


               <table align="center" cellpadding="0" cellspacing="0" class="style2">


                   <tr>


                       <td>


                           &nbsp;</td>


                       <td>


       <asp:Label ID="lblCount" runat="server"></asp:Label>


                       </td>


                   </tr>


               </table>


           </td>


       </tr>


</table>


Default.aspx后台代码


protected void Page_Load(object sender, EventArgs e)


   {


       lblCount.Text="您是第" + Application["count"].ToString() + "位访客";


   }


Global.asax文件代码


<%@ Application Language="C#" %>


<script runat="server">


   void Application_Start(object sender, EventArgs e)


   {// 在应用程序启动时运行的代码


       Application["count"] = 0;


   }


   void Application_End(object sender, EventArgs e)


   {//在应用程序关闭时运行的代码}


   void Application_Error(object sender, EventArgs e)


   { //在出现未处理的错误时运行的代码}


   void Session_Start(object sender, EventArgs e)


   { //在新会话启动时运行的代码


       Application.Lock();


       Application["count"] = (int)Application["count"] + 1;


       Application.UnLock();


   }


   void Session_End(object sender, EventArgs e)


   {  //在会话结束时运行的代码。


       // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为


       // InProc 时,才会引发 Session_End 事件。如果会话模式


       //设置为 StateServer 或 SQLServer,则不会引发该事件。


       Application.Lock();


       Application["count"] = (int)Application["count"] - 1;


       Application.UnLock();


   }


</script>


 


tt.png


 


tt.png


tt.png


目录
相关文章
|
7月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
171 0
|
7月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
94 0
|
存储 开发框架 前端开发
asp.net与asp.net优缺点及示例
asp.net与asp.net优缺点及示例
104 0
|
4月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
4月前
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
|
7月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
7月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
96 0
|
7月前
|
存储 开发框架 .NET
Asp.net就业课之Ado.net第一次课
Asp.net就业课之Ado.net第一次课
45 0
|
存储 开发框架 .NET
ASP.NET学生管理系统(.NET毕业设计)
ASP.NET学生管理系统(.NET毕业设计)
178 0
|
开发框架 前端开发 JavaScript
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件