Hướng dẫn config và sử dụng ASP.NET Session State
1 thg 9, 2013
Với ASP.net trạng thái của session (session state) có thể được server lưu trữ dưới nhiều dạng khác nhau và mỗi dạng lưu trữ sẽ có những ưu điểm riêng.
Môi trường minh họa
- Operation: Windows XP sp2
- Webserver: IIS 6
- .netframework: 2.0
- SQL server 2005
Giới thiệu:
Đa số các ứng dụng web đều quản lý thông tin session khi ứng dụng đó có phân quyền. Với ASP.net trạng thái của session (session state) có thể được server lưu trữ dưới nhiều dạng khác nhau và mỗi dạng lưu trữ sẽ có những ưu điểm riêng. Trong bài này chúng ta sẽ tìm hiểu về các dạng lưu trữ session của asp.net và cách sử dụng nó.
Nội dung:
Các vấn đề thường gặp khi sử dụng sesson với asp cổ điền và khắc phục với asp.net
Với các lập trình viên asp thì session là một tính năng thật tuyệt vời nhưng vẫn còn tồn tại nhiều giới hạn:
§ Vấn đề Độc lập trong xử lý: asp session tồn tại luồng xử lý (process) của server đặt website, các tác động lên luồng xử lý của server đặt website đồng nghĩa với sự tác động lên session.
§ Vấn đề giới hạn Server farm : Với những server load balancing (chạy song song 2 hoặc nhiều server cho 1 website) session không thể chia sẻ giữa các server.
§ Vấn đề phụ thuộc cookie : Nếu trình duyệt disable cookie thì coi như session cũng đi theo ông bà luôn :D.
Những cải tiến của asp.net session state giải quyết các giới hạn của session dùng trong asp cổ điển:
§ Vấn đề Độc lập trong xử lý: asp.net session state có thể load độc lập với tiến trình xử lý của web server đặt website (the ASP.NET host process) như thế session vẫn có thể tồn tại khi tiến trình sử lý của webserver bị ngắt hoặc dán đoạn. Tất nhiên bạn cũng có thể config cho asp.net state làm việc giống asp cổ điển.
§ Vấn đề giới hạn Server farm : Với việc xử lý độc lập session thì asp.net có thể support luôn mô hình load balancing.
§ Vấn đề phụ thuộc cookie: mặc dù giải pháp không phụ thuộc cookie (cookieless) đã có từ thời asp nhưng sử dụng nó rất phức tạp. Với asp.net chỉ cần 1 thông số config là mọi chuyện ok.
Nơi config asp.net session state và giải thích thuộc tính khi config
Các thông tin config cho asp.net session state đều nằm trong tập tin web.config:
<configuration>
<system.web>
<sessionState /> <!-- element để thiết lập hông tin config -->
</system.web>
</configuration>
Các thuộc tính config trong element "sessionState":
Một ví dụ :
<sessionState
mode="StateServer"
cookieless="false"
timeout="20"
sqlConnectionString="data source=127.0.0.1;userid sa;password = your passwords"
stateConnectionString="tcpip=127.0.0.1:42424"
/>
Thuộc tính mode:
Attribute
Option
Description
mode
Chỉ định nơi lưu trữ trạng thái session
Off
Tắt chế độ session
InProc
Sử dụng giống asp cổ điển, nghĩa là tiến trình xử lý session sẽ chung với tiến trình xử lý webserver.
StateServer
Trạng thái session được lưu trữ độc lập với tiến trình xử lý của webserver và được quản lý bởi 1 service chạy trên nền windows.Thông tin về service này được quy định bởi thuộc tínhstateConnectionString.
Hỗ trợ Load Balancing
Với dạng lưu trữ này session chỉ có thể bị mất khi service đề cập ở trên ngưng hoạt động (không tính dzụ time out và tắt trình duyệt nha ^_^)
SQLServer
Giống như StateServer nhưng trạng thái session đươc lưu trữ dưới database và thuộc tính sqlConnectionString sẽ chứa thông tin về cần thiết để truy cập database.
Hỗ trợ Load Balancing
Với dạng lưu trữ này session chỉ có thể mất khi time out hoặc khi bạn tắt trình duyệt
Thuộc tính cookieless: khi thuộc tình này có giá trị là true thì asp.net session state sẽ không sử dụng cookie để xửlý session. Lúc đó thông tin sẽ được lưu trữ ngay trên url và asp.net sẽ tự thêm vào url bình thường của bạn những chuỗi ký tự mã hóa. Ví dụ:
http://localhost/(lit3py55t21z5v55vlm25s55)/Appliction/SessionTest.aspx
§ Thuộc tính timeout: chứa giá trị quy định thời gian time out của session (tính bằng phút).
§ Thuộc tính sqlConnectionString: chứa chuỗi kết nối databse khi thuộc tính mode là SQLServer.
§ Thuộc tính stateConnectionString: chứa thông tin về server, port, giao thức truy cập host chứa db khi thuộc tính mode là SQLServer
Cách config các dạng lưu trữ session state trong web.config
1. InProc: khi mode được set giá trị này thì chỉ có thuộc tính timeout có tác dụng, với thiết lập này session của asp.net sẽ làm việc giống asp cổ điển.
Ví dụ: <sessionState mode="InProc" timeout="20" />
2. StateServer: để sử dụng được chế độ này bạn hãy khởi động service “Asp.net State service“
ví dụ: <sessionstate mode="stateserver" cookieless="false" timeout="20" />
3. SQLServer: Để sử dụng chế độ này bạn phải:
o Khởi động service “asp.net state service” giống như trên.
o Cài đặt database cho asp.net sesssion :
vào start --> run --> cmd
gõ lệnh : CD C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
gõ lệnh : osql –S [server name] –U [user] –P [password] <installsqlstate.sql
với [server name] là tên hosting, [User] là tên truy cập sql, [password]là password truy cập sql.
(ví dụ: osql -S kokichi\sqlexpress -U sa -P 123456 <installsqlstate.sql)
sau khi lện này chạy thành công, một database với tên “ASPState” sẽ được tạo để chứa dữ liệu của session.
o Thiết lập thông tin trong web.config
ví dụ:
<sessionState
mode="InProc"
cookieless="false"
timeout="20"
sqlConnectionString="data source=127.0.0.1;user id=sa;password=123456"
stateConnectionString="tcpip=127.0.0.1:42424"
/>
Tags:
thủ thuật ASP.net
Comments[ 0 ]
Đăng nhận xét