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(“輸出字符串”);
例:
<%
For ( int i=0;i<50;i++){ Response.Write(“X”);}
%>
(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+"
"+"瀏覽器類型:"+Request.Browser.Type+"
"+"瀏覽器版本:"+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頁面的地址欄中。
主要代碼:
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("
");
}
}
(2)TimeOut屬性
該屬性用于獲取并設置在會話狀態提供程序終止會話之前各請求之間所允許的時間(以分鐘為單位)。
語法:public int TimeOut{get;set;}
屬性值:超時時限(以分鐘為單位)
注:更改Timeout屬性的值也可以在Web.Config中,使用sessionSate配置元素的timeout屬性來設置Timeout屬性,也可以使用程序代碼直接設置Timeout屬性值。Timeout屬性不能超過525600(1年)的值。
例:?
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)登錄頁面
代碼:
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("");
}
}
(2)Session對象記錄用戶登錄名及登錄時間
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("歡迎用戶" + Session["UserName"].ToString() + "登錄本系統!
");
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(“瀏覽器中字符串”+”
”);
//結果:瀏覽器中字符串
HtmlDecode方法 用于字符串進行HTML編碼并返回已編碼的字符串
語法如下:public string HtmlDecode(string s)
參數:s 要舅媽的HTML字符串
例:Server.HtmlEncode(“瀏覽器中字符串”+”
”);//結果:瀏覽器中字符串
綜合應用:
例1,統計IP地址的登錄次數
后臺代碼:
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 + "
"
+ "瀏覽器類型:" + Request.Browser.Type + "
" + "瀏覽器版本:"
+ 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+"
");
}
sr.Close();
}
}
例4、創建一個網站,使用Response對象的Redirect方法實現頁面跳轉并傳遞參數。
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);
}
}
Admin.aspx
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["users"] != null)
{
lblinfo.Text = "恭喜你,登錄成功";
}
}
}
例5、驗證碼
起始頁Default2.aspx
protected void Button1_Click(object sender, EventArgs e)
{
string checkCode = Request.Cookies["CheckCode"].Value.ToString().ToLower();
if (checkCode.Equals(TextBox1.Text.ToLower()))
{
Response.Write("");
}
}
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、統計網站的訪問量
Default.asp前臺代碼
|
Global.aspx代碼
<%@ Application Language="C#" %>
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,則不會引發該事件。
}
例7、統計當前在線人數。當新用戶訪問網站時,會觸發Session_Start事件,當用戶有效期失效時,會觸發Session——End事件。所以在這兩個事件統計在線人數是比較科學的。
Default.aspx前臺代碼
|
Default.aspx后臺代碼
protected void Page_Load(object sender, EventArgs e)
{
lblCount.Text="您是第" + Application["count"].ToString() + "位訪客";
}
Global.asax文件代碼
<%@ Application Language="C#" %>
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();
}
ASP ASP.NET
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。