天天看點

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

指定用戶端發送的内容長度(以位元組計)

擷取用戶端發送的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頭儲存到磁盤。例:

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

Response應用

例:當程式運作時,在頁面Default.aspx中的TestBox文本框輸入一個值,單擊搜尋按鈕,将Testbox文本框中的值傳到WebForm1.aspx頁面的位址欄中。

ASP.Net 内置對象
ASP.Net 内置對象

主要代碼:

1、Default.aspx

protected void btnSearch_Click(object sender, EventArgs e)

  {

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

2、WebForm1.aspx

   {

           Response.Write("位址欄傳值id為:" + Request.QueryString["id"]);

Application對象

Application對象,可稱之為記錄應用程式參數的對象,主要用于共享應用程式集資訊。Application對象用于共享應用程式集資訊,即多個使用者共享一個Application對象。在第一個使用者請求ASP.NET檔案時,将啟動應用程式并建立Application對象。一旦Application對象被建立,它就可以共享和管理整個應用程式的資訊。在應用程式關閉之前,Application對象将一直存在。是以,Application對象是用于啟動和管理ASP.NET應用程式的主要對象。

Application對象的常用屬性及說明

AllKeys

傳回全部Application對象變量名到一個字元串數組中

Count

擷取Application對象變量的數量

允許使用索引或Application變量名傳回内容值。

Count屬性 該屬性用于擷取Application對象變量的數量

文法如下:public override int Count{get;}屬性值:集合中的Item對象數,預設值為0。例:

           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;}//集合中的對象名

例:

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

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

            }

Application對象的常用方法及說明

Add

新增一個Application對象變量

清除全部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

擷取對目前會話狀态對象的引用

擷取或設定會話值

TimeOut

設定Session對象的有效時間,預設值為20分鐘

Contents屬性 擷取目前會話狀态對象的引用。文法如下:

Public HttpSessionState Contents{get;}

屬性值:目前的HttpSessionState

           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

結束目前會話,并清除會話中的所有資訊。

用于向Session對象集合中添加一個新項

CopyTo

将會話狀态值的集合複制到一維數組中

清除全部的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)登入頁面

ASP.Net 内置對象

代碼:

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對象記錄使用者登入名及登入時間

ASP.Net 内置對象

  protected void Page_Load(object sender, EventArgs e)

       Response.Write("歡迎使用者" + Session["UserName"].ToString() + "登入本系統!<br>");

       Response.Write("您登入的時間為:" + Session["TimeLogin"].ToString());

CooKie對象

Cookie對象用于儲存用戶端浏覽請求的伺服器頁面,也可用它放非敏感資訊,資訊儲存的時間可以根據使用者的需要進行設定。并非所有的浏覽器支援Cookie,并且資料資訊以文本形式儲存在用戶端計算機中。

Cookie對象常用的屬性及說明

清除所有的Cookie

設定Cookie變量的有效時間,預設為100分鐘,若設定為0,則實時删除Cookie變量。

Name

取得Cookie變量的名稱

Value

擷取或設定Cookie變量的内容值

設定與目前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 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對象的值是否相等

           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

對要在浏覽器中顯示的字元串進行編碼

傳回與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位址的登入次數

ASP.Net 内置對象

背景代碼:

   protected void Page_Load(object sender, EventArgs e)

       if (!IsPostBack)

           int lastVisitCounter;

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

               lastVisitCounter = 0;

               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";    

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

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

例2、擷取浏覽器的資訊

       //擷取浏覽器的平台、類型和版本資訊

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

       + "浏覽器類型:" + Request.Browser.Type + "<br>" + "浏覽器版本:"

       + Request.Browser.Version;

例3、輸出文本檔案的内容

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

           string rl;

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

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

           sr.Close();

例4、建立一個網站,使用Response對象的Redirect方法實作頁面跳轉并傳遞參數。

ASP.Net 内置對象

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");

           ClientScript.RegisterStartupScript(this.GetType(), "", "alert('使用者名或密碼錯誤');", true);

ASP.Net 内置對象

Admin.aspx

           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>

</html>

       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));

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

           checkCode += code.ToString();

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

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

       return checkCode;

       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、統計網站的通路量

ASP.Net 内置對象

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>

               </tr>

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

           </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();

       Stat = (int)Application["counter"]; //擷取Application對象中儲存的網站總通路量

       Stat += 1;    //資料累加

       object obj = Stat;

       Application["counter"] = obj;

       string file_path = Server.MapPath("counter.txt");//将資料記錄寫入檔案

       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>

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

                       </td>

                   </tr>

               </table>

           </td>

       </tr>

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

Global.asax檔案代碼

       Application["count"] = 0;

   {//在應用程式關閉時運作的代碼}

   { //在出現未處理的錯誤時運作的代碼}

   { //在新會話啟動時運作的代碼

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

   {  //在會話結束時運作的代碼。

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