net06 asp.net applications & state management
TRANSCRIPT
Công nghệ .NET.NET Technology
Lương Trần Hy HiếnBộ môn Công nghệ Phần mềm
Khoa Công Nghệ Thông Tin
Trường ĐHSP TP. Hồ Chí Minh
Chương 3:
ASP.NET Application & State Management
Công nghệ NET 3 HIENLTH
Nội dung
Request
Response
Server
Quản lý trạng thái
o View state
o Session state
o Cookie
Cross-page Postback
Application
Công nghệ NET 4 HIENLTH
Tổng quan
Công nghệ NET 5 HIENLTH
Request Object
Request là một thể hiện của lớp HttpRequest, Browserdùng Request object để gửi thông tin cần thiết tớiServer
Dùng để đọc thông tin từ client gửi lên (header, querystring, cookies, …)
Data
Công nghệ NET 6 HIENLTH
Request Object (tt)
Các thuộc tính
RequestType: trả về phương thức truyền dữ liệu từclient đến server gồm 2 phương thức POST và GET
Cú pháp
valMethod=Request.RequestType
Công nghệ NET 7 HIENLTH
Lấy dữ liệu gửi đi
Request.Form("Phần_tử_cần_đọc"): Đọc giá trị của một phần tử được gửi theo phương thức POST.
Request.QueryString("Phần_tử_cần_đọc"): Đọc giá trị của một phần tử được gửi theo phương thức GET.
Công nghệ NET 8 HIENLTH
Request Object - POST
Ví dụ: thiết kế giao diện như hình
Công nghệ NET 9 HIENLTH
Mã giao diện<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"><title>trang 1</title></head><body>
<form id="form1" runat="server" ><table>
<tr><td style="width: 100px">username</td><td style="width: 100px"><asp:TextBox ID="txtUser"
runat="server"></asp:TextBox></td></tr><tr><td style="width: 100px">password</td>
<td style="width: 100px"><input type="password" id="txtPass" runat="server" /></td></tr>
<tr><td style="width: 100px" colspan="2"><asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Default2.aspx"/></td></tr>
</table> </form>
</body></html>
Công nghệ NET 10 HIENLTH
Request Object - POST
Ví dụ (tt):Lấy giá trị của UserName và Password trên form
string sUser, sPass;sUser = Request.Form["txtUser"];sPass = Request.Form["txtPass"];//Xuất ra màn hình
Công nghệ NET 11 HIENLTH
Request Object - GET
Lấy dữ liệu từ các phần tử của form:
Cú pháp:
Nếu tham số không có giá trị thì giá trị trả về của tham số khi sử dụng Request.QueryString là null.
Request.QueryString[“varName”]
Công nghệ NET 12 HIENLTH
Request Object - GET
<form method=“Get" action=“CheckUser.aspx">UserName: <input type="text" name="txtUser" /><br /Password: <input type="password" name="txtPwd" /><br />
<input type="Submit" name="btnLogin" value="Login" /><br /></form>
Công nghệ NET 13 HIENLTH
Request Object - GET
Tại Server (file CheckUser.aspx), lấy giá trị của UserName và Password
string strUser, strPws;
strUser = Request.QueryString["txtUser"];
strPws = Request.QueryString["txtPass"];
Công nghệ NET 14 HIENLTH
Request Object - GET
Hoặc
<a href=“ReadNews.aspx?CatID=edu&NewsID=98708”>Tin Giáo dục
</a>
Var1=Request.QueryString[“CatID”];//Var1=eduVar2=Request.QueryString[“NewsID”];//Var2=98708
Tại ReadNews.aspx muốn lấy giá catID and NewsID, sử dụng cú pháp:
Công nghệ NET 15 HIENLTH
Demo Query String
Tạo một ứng dụng truy cập CSDL GameList gồm:
oGameList.aspx: hiển thị tên tất cả các game có trong database, với mỗi game tạo url dạng querystring với id của game đó, user kích vào sẽ mở ra trang GameDetail.aspx cho phép xem chi tiết thông tin của game đó
oGameDetail.aspx: lấy id từ querystring, đọc CSDL GameList và trả về chi tiết tất cả thông tin của game.
Công nghệ NET 16 HIENLTH
Query String
Công nghệ NET 17 HIENLTH
Query String
Tạo trang GameList.aspx
o Trang này có control là label sẽ hiển thị danh sách các tên game.
Label: có id là “lblGameList”
Công nghệ NET 18 HIENLTH
Query String
Trang GameList.aspx khi thực thi
Danh sách các tên game lấy trong database
Hyperlink xem chi tiết của “Thuận Thiên Kiếm”
Công nghệ NET 19 HIENLTH
Query String
Tạo trang GameDetail.aspx
o Trang này có 4 label chứa các thông tin chi tiết của game:
• Tên game: lblTenGame, nhà sản xuất: lblNSX, nhà phát hành: lblNPH, thể loại: lblTheLoai
Công nghệ NET 20 HIENLTH
Query String
Phần xử lý của GameDetail.aspxprotected void Page_Load(object sender, EventArgs e)
{// lấy query stringstring sid = Request.QueryString["id"]; // tham số “id”if (sid != null) // kiểm tra xem tham số này có tồn tại hay không{
// truy cap database de lay du lieustring sConn = @"server=.; database=gamelist; trusted_connection=true";SqlConnection conn = new SqlConnection(sConn); // tạo đối tượng kết nốitry{
conn.Open(); // mở kết nốistring query = string.Format("select * from DanhMuc where ID={0}",sid);SqlCommand cmd = new SqlCommand(query, conn);SqlDataReader reader;reader = cmd.ExecuteReader(); // thực thi câu truy vấn
// phần tiếp theo trong slide kế…
Công nghệ NET 21 HIENLTH
Query String
// tiếp theo của silde trướcif (reader.HasRows) // nếu có dữ liệu
{reader.Read(); // đọc 1 dòng dữ liệulblTenGame.Text = reader["TenGame"].ToString();lblNSX.Text = reader["NhaSanXuat"].ToString();lblNPH.Text = reader["NhaPhatHanh"].ToString();lblTheLoai.Text = reader["TheLoai"].ToString();
}reader.Close(); conn.Close(); // đóng kết nối
}catch (Exception ex){
Response.Write(ex.Message); // hiển thị thông báo lỗi}
} // end if (sid !=null)} // end method Page_Load
Công nghệ NET 22 HIENLTH
Query String
Chạy demo
id = 5 là mã game Cổ Long
Công nghệ NET 23 HIENLTH
Response Object
Response: Đối tượng này được dùng để gửi nội dung (một xâu) bất kỳ về cho trình duyệt
Phương thức:o Response.Write(<Biểu thức>) dùng để gửi giá trị biểu
thức truyền vào cho phía trình duyệt.
o Response.Redirect(“địa chỉ URL”): Chuyển tới một trang khác.
Data
Công nghệ NET 24 HIENLTH
Response Object (tt)
Các phương thức
Response.Clear(): Xóa vùng tạm
Cú pháp:
Response.Flush() dùng để đưa dữ liệu còn trong bộ đệm phía server về cho phía trình duyệt.
Response.End(): Kết thúc tiến trình xử lý trên Server và đẩy dữ liệu tới Client
Response.Clear()
Công nghệ NET 25 HIENLTH
Response Object
Các thuộc tính
Buffer: có 2 giá trị true và false quy định cách
truyền tải dữ liệu:
o True: Hoàn tất công việc và gửi một lần
o False: Thực hiện xong đến đâu thì gửi đến đó
Công nghệ NET 26 HIENLTH
Server Object
Đối tượng Server cung cấp thông tin của Web server choứng dụng, bao gồm các phương thức giúp chuyển điều khiểngiữa các trang với nhau, lấy thông tin về mã lỗi, encode, …
Các thuộc tính
o MachineName: tên server
o ScriptTimeout: thiết lập thời gian xử lý tối đa 1 file
Ví dụ:
Server.ScriptTimeout = 100s //thiết lập thời gian mặc định
Công nghệ NET 27 HIENLTH
Server Object
Các phương thức
MapPath(“URL”): ánh xạ đường dẫn ảo thành đường
dẫn vật lý cho một tập tin trên Server
o Cú pháp:
o Path là chuỗi thực hiện đường dẫn tương đối của tập tintrên ứng dụng Web
o Phương thức sẽ trả về chuỗi hiện thực đường dẫn vật lýcủa tập tin đó.
Server.MapPath(path)
Công nghệ NET 28 HIENLTH
Server Object
Transfer: gửi tất cả thông tin mà nó đã xử lý từ trang
ASPX hiện hành sang trang ASPX khác. Cú pháp:
Trong đó, tham số path là đường dẫn của tập tin ASPX
cần chuyển điều khiển.
Lưu ý:
o sử dụng ký hiệu “~” để chỉ đến đường dẫn tương đối
o sử dụng ký hiệu “..” để chỉ đến đường dẫn tuyệt đối
Server.Transfer(path)
Phân biệt Server.Tranfer vs Reponse.Redirect
Công nghệ NET 29 HIENLTH
Server Object
HtmlEncode(str): dùng để mã hoá HTML thànhchuỗi
Cú pháp:
Server.HTMLEncode(str)
Công nghệ NET 30 HIENLTH
Server Object
Khi mã hoá chuỗi HTML sang chuỗi bình
thường nếu gặp các ký tự như sau sẽ chuyển
sang ký tự tương ứng:
o Ký tự <chuyển thành <
o Ký tự >chuyển thành >
o Ký tự & chuyển thành &
o Dấu đôi “ chuyển thành "
Công nghệ NET 31 HIENLTH
Server Object
HtmlDecode(strcontent):giải mã các thẻ HTML
Ví dụ:
Str = “n>5”
Str = Server.HtmlDecode(str); // kết quả n>5
Công nghệ NET 32 HIENLTH
Server Object
Phương thức URLEncode: Tương tự nhưphương thức HTMLEncode, phương thứcURLEcode dùng để mã hoá URL thành chuỗi
Cú pháp:
Quy tắc chuyển:
o Ký tự khoảng trắng chuyển thành dấu +
o Ký tự không thuộc ký tự chữ và số sẽ chuyển thành số hexadecimal
Server.URLEncode(str)
Công nghệ NET 33 HIENLTH
Quản lý trạng thái
Công nghệ NET 34 HIENLTH
Quản lý trạng thái
Mỗi ứng dụng cần chia sẽ thông tin giữa các request
ASP.NET cung cấp các cơ chế cho phép chia sẽ thông tin giữa các Request:
o Các đối tượng quản lý trạng thái (State) phía client và server.
o Cơ chế Cache
Công nghệ NET 35 HIENLTH
Các đối tượng quản lý trạng thái
Client-based State
o Được lưu trữ ở máy Client
o Gồm: ViewStates, Hidden Fields, QueryStrings, Cookies
Server-based State
o Được lưu trữ ở máy Server
o Gồm: Session, Application
Công nghệ NET 36 HIENLTH
View state
Cho phép lưu các kiểu dữ liệu của .NET
Lưu trữ ở client side, trong hidden field của trang web
Lưu trữ trong các lần post back của trang. Mất dữ liệu khi user nhập vào URL mới
Phạm vi giới hạn trong một trang web
Bảo mật: mặc định ở trạng thái insecure. Tuy nhiên ta có thể thiết lập page directive để mã hóa
Hạn chế: lưu trữ số lượng lớn thông tin trong viewstate sẽ làm chậm thời gian response và request
Thường dùng để cài đặt thông tin đặc biệt nào đó của page
Công nghệ NET 37 HIENLTH
View state
View state là ưu tiên chọn lựa đầu tiên khi cần lưu trữ thông tin trong phạm vi của một trang web
View state cũng được sử dụng bởi ASP.NET Web control, cho phép các control này duy trì những thuộc tính giữa các lần postback
Có thể add dữ liệu vào
view state collection
thông qua thuộc tính
Page.ViewState
int count;if (ViewState["Count"] == null)
count = 0;else
count = (int) ViewState["Count"];count += 1;
ViewState["Count"] = count;
Label1.Text = string.Format("Số lần postback {0}", count);
Công nghệ NET 38 HIENLTH
View state
Thuận lợi:
View state không sử dụng memory trên server
View state cũng không bị ràng buộc nào (như time out)
Tình huống hạn chế khi sử dụng view state
Cần thiết lưu trữ dữ liệu có mức độ nhạy cảm cao. View state cũng có thể mã hóa, nhưng session lựa chọn tốt hơn
Cần thiết lưu trữ thông tin được sử dụng trong nhiều trang. Trong tình huống này ta sử dụng session, cookie hoặc query string.
Cần thiết lưu trữ thông tin lớn và không muốn làm chậm thời gian truyền tải, nên sử dụng database, cache hoặc session.
Công nghệ NET 39 HIENLTH
Session là gì?
User 1
User 2
User 3
Session: user 1Session: user 2Session: user 3
Công nghệ NET 40 HIENLTH
Session là gì?
Khái niệm phiên làm việc• Mỗi khi user request một trang web lần đầu tiên thì
phiên làm việc được tạo ra.• Một nhận dạng phiên làm việc được cấp bởi server• Phiên làm việc kết thúc khi
• Người lập trình hủy• Kết thúc cycle life (quy định bởi Timeout)• User đóng trình duyệt
Phiên làm việc là cách thức trao đổi/chia sẻ dữ liệu giữa các trang web trong Web app.
Công nghệ NET 41 HIENLTH
Session
Cho phép lưu trữ dữ liệu kiểu .NET
Lưu trữ trên bộ nhớ của server
Thời gian sống kết thúc sau một khoảng thời gian định nghĩa trước (thường là 20 phút, có thể thay đổi, hoặc lập trình hủy)
Phạm vi toàn bộ ứng dụng .NET
Tính bảo mật cao, do dữ liệu lưu trữ trên server, không bao giờ chuyển cho client và mỗi client có client session id riêng
Lưu trữ session với dữ liệu lớn cũng có thể làm chậm server, đặc biệt nếu nhiều người truy cập đồng thời, do mỗi user sẽ có bản copy session riêng!
Công nghệ NET 42 HIENLTH
Session
• Mỗi user sẽ được gán một giá trị gọi là Session id, giá trị này là duy nhất
• Được lưu trữ trong non-persistent cookie cho đến khi trình duyệt đóng.
• Session state sử dụng cú pháp collection như là view state
int count;if (Session["Count"] == null)
count = 0;else
count = (int)Session["Count"];count++;Session["Count"] = count;
int count;if (Session["Count"] == null)
count = 0;else
count = (int)Session["Count"];count++;Session["Count"] = count;
Công nghệ NET 43 HIENLTH
Session – cấu hình
• Thời gian sống của session có thể thiết lập thông qua web.config (đơn vị là phút)
• Session có thể làm việc mà không cần cookie
• Trong trường này Session ID lưu trữ trong URL
<configuration><system.web>
<sessionState timeout="10" /></system.web>
</configuration>
<configuration><system.web>
<sessionState timeout="10" /></system.web>
</configuration>
<sessionState cookieless="true" /><sessionState cookieless="true" />
http://server/(h44a1e55c0breu552yrecobl)/page.aspxhttp://server/(h44a1e55c0breu552yrecobl)/page.aspx
Công nghệ NET 44 HIENLTH
Session
Phương thức
Abandon(): giải phóng vùng nhớ được dùng để duy trìđối tượng Session trên Web Server ngay khi được gọithực hiện. Những yêu cầu sau đó được Web server coinhư là một người dùng mới.
Remove(“SessionName”): xoá dữ liệu trên biến “VarSession”
RemoveAll(): Xoá dữ liệu, nhưng sessionID vẫn tồn tại
Công nghệ NET 45 HIENLTH
Session
Ví dụ: Tạo trang (Page) hoặc User Control là Login.aspx
Thiết kế giao diện như sau:
Công nghệ NET 46 HIENLTH
Session
Khởi tạo và Huỷ thông tin đăng nhập của người dùng trong Session
void Session_Start(object sender, EventArgs e)
{
// Tăng số khách viếng khi có 1 phiên làm việc của user
Application["SoKhachVieng"] = (int)Application["SoKhachVieng"] + 1;
// Thiết lập thời gian TimeOut cho mọi phiên là 30 phút
Session.Timeout = 30;
// Đặt trạng thái ban đầu của user là chưa đăng nhập
Session["LOGIN_OK"] = false;
}
Công nghệ NET 47 HIENLTH
protected void btnLogin_Click(object sender, EventArgs e) {
if (Authority(txtUserName.Text, txtPassword.Text)) {
// Lưu thông tin đăng nhập thành công vào SessionSession["LOGIN_OK"] = true; // Ẩn chức năng LoginpanelLogin.Visible = false; // Hiển thị chức năng logout và lời chào mừng LblGreeting.Text = "Chào mừng bạn " +
txtUserName.Text + " đã đăng nhập website!"; } else
{ // Lưu thông tin đăng nhập thất bại vào Session Session["LOGIN_OK"] = false;
} }
Công nghệ NET 48 HIENLTH
Session
protected bool Authority(string user, string pwd)
{
if (user == "admin" && pwd == "12345")
{
return true;
}
return false;
}
Công nghệ NET 49 HIENLTH
Cookie
• Là mẫu tin nhỏ (dạng chuỗi) dùng để lưu trữ thông tin người dùng trên máy của client (trong bộ nhớ hoặc file text nhỏ).
• Lifetime được thiết lập bởi người lập trình, được sử dụng trong nhiều trang và trong các lần visit site
• Phạm vi toàn bộ ứng dụng .NET
• Không bảo mật, do toàn bộ dữ liệu được gởi cho client. Cookie có thể modify dễ dàng.
• Tương tự như view state, hạn chế chỉ sử dụng dữ liệu nhỏ
• Thường lưu trữ thông tin cá nhân để custom cho website.
Công nghệ NET 50 HIENLTH
Cookie
Để thiết lập một cookie:• Tạo đối tượng System.Net.HttpCookie• Tạo dữ liệu dạng chuỗi• Add đối tượng cookie vào đối tượng Response của
trang web hiện tại
HttpCookie cookie = new HttpCookie(“Account");cookie[“Username"] = “Nguyen Mai Chi";Response.Cookies.Add(cookie);
HttpCookie cookie = new HttpCookie(“Account");cookie[“Username"] = “Nguyen Mai Chi";Response.Cookies.Add(cookie);
Công nghệ NET 51 HIENLTH
Cookie
Để truy cập cookie• Sử dụng đối tượng Request để lấy cookie • Kiểm tra xem cookie khác null?• Truy cập giá trị cookie qua thuộc tính key
string str = "";HttpCookie cookie = Request.Cookies["Account"];if (cookie != null)
str = cookie["Username"];
string str = "";HttpCookie cookie = Request.Cookies["Account"];if (cookie != null)
str = cookie["Username"];
Công nghệ NET 52 HIENLTH
Cookie
• Cookie được phân làm 2 loại• Persistent cookies/permanent cookie
• Lưu trữ trong đĩa cứng của client cho đến khi hết hạn, dạng cookie này được thiết lập ngày hết hạn (expiration date)
• Non persistent cookie/temporary cookie• Không định nghĩa thời gian hết hạn, cookie được lưu trữ
trong browser memory, kết thúc khi đóng trình duyệt!
• Không có sự khác nhau khi sử dụng persistent và non persistent cookie
Công nghệ NET 53 HIENLTH
Cookie
• Khai báo Persistent cookie
HttpCookie cookie = new HttpCookie("Account");cookie["Username"] = "Nguyen Mai Chi";cookie["email"] = “[email protected]";// khai báo thời gian hết hạn cho cookiecookie.Expires = DateTime.Now.AddDays(5);// add cookie vào response của trang webResponse.Cookies.Add(cookie);
HttpCookie cookie = new HttpCookie("Account");cookie["Username"] = "Nguyen Mai Chi";cookie["email"] = “[email protected]";// khai báo thời gian hết hạn cho cookiecookie.Expires = DateTime.Now.AddDays(5);// add cookie vào response của trang webResponse.Cookies.Add(cookie);
Công nghệ NET 54 HIENLTH
Cross-page Postback
• Cross page postback là dạng postback gởi tới trang khác
• Các button control như Button, ImageButton và LinkButton đều có thuộc tính PostBackUrl
• Để sử dụng Cross-page postback• Thiết lập PostBackUrl cho web form cần chuyển
đến• Khi user click vào button• Page sẽ được gởi tới URL mới với tất cả các giá trị
của các control trong trang hiện thời.
Công nghệ NET 55 HIENLTH
Cross-page Postback
Trang cross page có thể truy cập trang trước thông qua thuộc tính PreviousPage
protected void Page_Load(object sender, EventArgs e){
if (PreviousPage != null){
lblInfo.Text = "You came from " +PreviousPage.Header.Title;
}}
protected void Page_Load(object sender, EventArgs e){
if (PreviousPage != null){
lblInfo.Text = "You came from " +PreviousPage.Header.Title;
}}
Công nghệ NET 56 HIENLTH
Cross-page Postback
Để truy cập chi tiết hơn, các giá trị của control trên form, thì cần phải gán tham chiếu PreviousPage cho lớp page tương ứng
Ta có thể add thuộc tính vào trang nguồn và đọc chúng ở trang đích.
if (PreviousPage != null) {SourcePage prevPage = PreviousPage as
SourcePage;if (prevPage != null){
lblInfo.Text = "Welcome" + prevPage.NameEntry;}
}
if (PreviousPage != null) {SourcePage prevPage = PreviousPage as
SourcePage;if (prevPage != null){
lblInfo.Text = "Welcome" + prevPage.NameEntry;}
} Tên lớp của trang source
Thuộc tính của lớp SourcePage
Công nghệ NET 57 HIENLTH
Cross-page Postback
• Minh họa cross-page Postback
• Tạo 2 trang • SendInfo.aspx: chứa form nhập thông tin user• TargetPage.aspx: lấy thông tin từ user từ
SendInfo.aspx và hiển thị lên trình duyệt.
Công nghệ NET 58 HIENLTH
Cross-page Postback
Mô tả control của trang SendInfo.aspx
Id control Kiểu control Thuộc tính Diễn giải
txtUsername TextBox Nhập tên user
txtEmail TextBox Nhập địa chỉ email
txtCompany TextBox Nhập tên công ty
btnPostInfo Button PostBackUrl = ~/TargetPage.aspx
Button thực thi thao tác Cross Page Postback
Công nghệ NET 59 HIENLTH
Cross-page Postback
Khai báo thuộc tính PostBackUrl cho button btnPostInfo
Khai báo URL cho PostBackUrl
Công nghệ NET 60 HIENLTH
Cross-page Postback
• Mô tả trang TargetPage.aspx• Lấy thông tin từ SendInfo.aspx và hiển thị ra
trình duyệt
Id control Kiểu control Thuộc tính Diễn giải
lblUsername Label - Hiển thị tên user
lblEmail Label - Hiển thị email
lblCompany Label - Hiển thị công ty
Công nghệ NET 61 HIENLTH
Cross-page Postback
Phần xử lý của TargetPage lấy thông tin từ SourcPage.aspx
protected void Page_Load(object sender, EventArgs e) {// lấy thông tin từ previous pageif (PreviousPage != null) {
// biến đối tượng source tham chiếu đến previous pageSendInfo source = PreviousPage as SendInfo;
// lấy các control của previous page (SourcePage.aspx)TextBox username = (TextBox) source.FindControl("txtUsername");TextBox email = (TextBox) source.FindControl("txtEmail");TextBox company = (TextBox)source.FindControl("txtCompany");
// gán thông tin cho các labellblUsername.Text = username.Text;lblEmail.Text = email.Text;lblCompany.Text = company.Text;
} // end if} // end method Page_Load
ID của control trong SendInfo.aspx
SendInfo là class page của SendInfo.aspx
Công nghệ NET 62 HIENLTH
Application
Đối tượng Application được sử dụng để quản lý
tất cả các thông tin của một ứng dụng web, bao
gồm các file, trang web, sự kiện, module và code
trong thư mục web ảo(virtual directory) và các thư
mục con của nó.
Application chia sẻ thông, nghĩa là một Application
sau khi khởi tạo thì mọi người sử dụng có thể truy
cập đối tượng này.
Công nghệ NET 63 HIENLTH
Application vs Session
Application:
o Chia sẽ dữ liệu cho tất cả người dùng của một ứng dụng (dữ liệu toàn cục, đa người dùng)
Session:
o Chia sẽ dữ liệu cho nhiều Web Form trong cùng một Session
o Chỉ có Session hiện hành mới có khả năng truy cập thông tin Session của chính nó.
Công nghệ NET 64 HIENLTH
Sự kiện Application và Session
Application_Start: Người dùng đầu tiên viếng thăm 1 trang web trong ứng dụng web được gọi.
Application_End: Khi ứng dụng web kết thúc (không có người dùng nào mở trang web của ứng dụng)
Application_Error: Xảy ra khi có lỗi trong ứng dụng
Session_Start: Một người dùng mới, ghé thăm 1 trang web của ứng dụng
Session_End: Người dùng đó đóng trình duyệt hoặc sau một khoảng thời gian timeout không request lên ứng dụng
Công nghệ NET 65 HIENLTH
Application
Khởi tạo:
Đối tượng Application được tạo khi client yêu cầu bất kỳ trang nào trong ứng dụng
Application.Lock();
Application[“TenBien”] = “Value” ;
Application.UnLock();
Công nghệ NET 66 HIENLTH
Application
Lấy giá trị:
<biến> = Application[“tên biến”];string s = (string) Application[“chuoi”] ;
int count = (int) Application[“count”] ;
Công nghệ NET 67 HIENLTH
Ví dụ dùng Application
Đọc số lượt truy cập, số người online
Công nghệ NET 68 HIENLTH
THE END