Thông báo: Trư?ng h?p ?ng d?ng, ?ng d?ng các s? ki?n, và nhà nư?c ?ng d?ng trong ASP.NET

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 312607 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

ASP.NET HttpApplication đ?i tư?ng ?n nhi?u khái ni?m ph?c t?p đ? đơn gi?n hóa các chương tr?nh mô h?nh. Bài vi?t này mô t? m?t s? các ph?c t?p. Ngoài ra, đi?u này bài vi?t mô t? như th? nào ASP.NET x? l? v?n đ? tương thích v?i các c? đi?n Microsoft Active Server Pages (ASP) ?ng d?ng đ?i tư?ng.

Bài vi?t này đư?c chia thành sau đây ph?n:

THÔNG TIN THÊM

?ng d?ng l?p và trư?ng h?p ?ng d?ng

M?t ?ng d?ng l?p đư?c đ?nh ngh?a trong t?p tin Global.asax. M? trong Global.asax xác đ?nh m?t l?p m?i mà có ngu?n g?c t? System.web.HttpApplication. N?u không có m?t t?p tin Global.asax, l?p cơ s?, HttpApplication, đư?c s? d?ng như là l?p ?ng d?ng.

ASP.NET runtime t?o ra như nhi?u trư?ng h?p c?a các l?p h?c ?ng d?ng khi c?n thi?t đ? x? l? yêu c?u cùng m?t lúc. Đ?i v?i h?u h?t các ?ng d?ng, con s? này là h?n ch? v? s? lư?ng ch? đ? và v?n c?n trong kho?ng 1 đ?n 100, tùy thu?c vào ph?n c?ng, t?i máy ch?, c?u h?nh, và như v?y. Nhi?u yêu c?u tái s? d?ng ?ng d?ng trư?ng h?p, và danh sách mi?n phí các ?ng d?ng trư?ng h?p đư?c lưu gi? trong các th?i k? gi?m t?i. Trư?ng h?p ?ng d?ng đư?c s? d?ng m?t cách an toàn s?i, có ngh?a là, m?t trong nh?ng yêu c?u m?t lúc. Đi?u này có ? ngh?a quan tr?ng:
  • B?n không c?n ph?i lo l?ng v? khóa khi b?n truy c?p các thành viên không t?nh c?a giai c?p ?ng d?ng.
  • ?ng d?ng m? có th? lưu tr? d? li?u yêu c?u cho m?i yêu c?u trong các thành viên không t?nh c?a l?p h?c ?ng d?ng (nhưng không ph?i sau khi các EndRequest s? ki?n v? s? ki?n này có th? duy tr? các yêu c?u cho m?t ch?ng đư?ng dài th?i gian).
B?i v? các thành viên t?nh c?a b?t k? l?p h?c, trong đó có m?t ?ng d?ng l?p, có không thread-safe, m? ngư?i s? d?ng ph?i cung c?p thích h?p khóa cho truy nh?p cho các thành viên t?nh. Đi?u này áp d?ng cho b?t k? thành viên t?nh mà b?n thêm vào các ?ng d?ng l?p.

S? d?ng các hư?ng d?n sau đ? truy c?p vào các Ví d? ?ng d?ng đư?c liên k?t v?i các yêu c?u hi?n t?i:
  • T? Global.asax, s? d?ng các Đi?u này ho?c Tôi đ?i tư?ng.
  • T? m?t trang, t?t c? các trang bao g?m m?t m?nh m?-g? ApplicationInstance b?t đ?ng s?n.
  • T? các HttpContext đ?i tư?ng, s? d?ng các HttpContext.ApplicationInstance b?t đ?ng s?n (mà b?n g? như HttpApplication).
Chú ý B?i v? ?ng d?ng đ? c?p đ?n t? đi?n nhà nư?c toàn c?u ?ng d?ng trong c? đi?n ASP, ASP.S? d?ng NET ApplicationInstance và không ph?i ?ng d?ng như m?t tên đ?c tính đ? đ? c?p đ?n các ?ng d?ng ví d? mà x? l? các yêu c?u hi?n t?i.

S? ki?n ?ng d?ng

Tr?n đ?i c?a m?t yêu c?u bao g?m m?t lo?t các ?ng d?ng s? ki?n (và ti?m ?n m?t s? bư?c mà ASP.Tri?n khai m?ng). Nh?ng s? ki?n này li?t kê dư?i đây theo th? t? chúng đư?c th?c hi?n:
  1. BeginRequest
  2. AuthenticateRequest s? ki?n
  3. DefaultAuthentication s? ki?n n?i b?
  4. AuthorizeRequest s? ki?n
  5. ResolveRequestCache s? ki?n
  6. N?i b? bư?c đ? "x? l? b?n đ?" (khi biên so?n m?t v? trí, m?t trư?ng h?p trang đư?c t?o ra)
  7. AcquireRequestState s? ki?n
  8. PreRequestHandlerExecute s? ki?n
  9. N?i b? bư?c "th?c thi l?nh x? l?" (khi trang m? này là b? hành quy?t)
  10. PostRequestHandlerExecute s? ki?n
  11. ReleaseRequestState s? ki?n
  12. N?i b? bư?c đ? l?c h?i đáp UpdateRequestCache s? ki?n
  13. UpdateRequestCache s? ki?n
  14. EndRequest s? ki?n
Chú ý N?u b?n s? d?ng Server.Transfer ho?c Response.Redirect(string), yêu c?u hi?n t?i có hi?u qu? b? gián đo?n và m?t s? s? ki?n đư?c li?t kê ? trên s? không đư?c nêu ra. Tuy nhiên, các EndRequest s? ki?n s? đư?c nâng lên trong trư?ng h?p này.

Các m?c sau đây có th? x? l? các s? ki?n này:
  • N?i b? ASP.NET trang khuôn kh? (ví d?, bư?c 6, 9, và 12 trong danh sách trư?c).
  • HTTP mô-đun đó đư?c c?u h?nh cho ?ng d?ng. Các m?c đ?nh danh sách các mô-đun HTTP đư?c xác đ?nh trong t?p tin Machine.config.
  • M? trong Global.asax là n?i thông qua các Application_ ngày EventName phương pháp ho?c đó là n?i m?t cách r? ràng khi b?n thêm x? l? s? ki?n Đ?i v?i m?t tên x? l? khác.
M?i s? ki?n có th? đ?ng b? và không đ?ng b? thuê bao. Thuê bao không đ?ng b? đư?c th?c hi?n l?n đ?u tiên. Không ph?i t?t c? s? ki?n luôn luôn b? hành quy?t; s? ki?n duy nh?t luôn luôn th?c hi?n EndRequest. Do đó, th?c hi?n t?t c? các after-request d?n trong các EndRequest s? ki?n.

Chú ý Trong h?u h?t trư?ng h?p, các ph?n ?ng th?c t? đư?c g?i t?i khách hàng sau khi Ví d? ?ng d?ng k?t thúc v?i nh?ng ph?n ?ng (đó là sau khi EndRequest).

Application_OnStart và Application_OnEnd

ASP.NET gi?i thi?u đ?c đáo Application_OnStartApplication_OnEnd "s? ki?n" đ? tương thích v?i c? đi?n ASP. Nh?ng s? ki?n này "" thi hành ch? m?t l?n trong đ?i s?ng c?a m?t ?ng d?ng và không ph?i cho m?i ?ng d?ng ví d?. V? v?y, n?u b?n thay đ?i các thành viên không t?nh t?i đây phương pháp, b?n ?nh hư?ng đ?n trư?ng h?p ch? có m?t ?ng d?ng và không ph?i t?t c? trư?ng h?p. B?n có th? kh?i t?o m?t ví d? ?ng d?ng ho?c trong các nhà xây d?ng ho?c b?ng ghi đè các Init phương pháp.

Application_OnStart là m?t tương đương logic v?i các nhà xây d?ng l?p cho các ?ng d?ng l?p, nhưng nó cung c?p m?t l?i th?: các m? có quy?n truy c?p vào các HttpContext Đ?i v?i yêu c?u đ?u tiên t?i ?ng d?ng.

?ng d?ng nhà nư?c

?ng d?ng qu?c là m?t t? đi?n toàn c?u c?a các đ?i tư?ng vào cu?i b? ràng bu?c, mà c? đi?n ASP gi?i thi?u đ? bù cho s? v?ng m?t c?a các bi?n toàn c?u trong Microsoft Visual Basic script Edition (VBScript). Trong ASP.NET, b?n có th? truy c?p ?ng d?ng nhà nư?c thông qua m?t trong nh?ng cách sau:
  • ?ng d?ng b?t đ?ng s?n (trong đó đư?c đ?nh ngh?a trong c? hai HttpApplicationTrang các l?p h?c)
  • HttpContext.Application
ASP.NET bao g?m nhà nư?c ?ng d?ng ch? y?u cho các kh? năng tương thích v?i c? đi?n ASP v? v?y mà nó là d? dàng hơn đ? di chuy?n các ?ng d?ng hi?n có đ? ASP.NET. Đó là khuy?n cáo r?ng b?n lưu tr? d? li?u thành viên t?nh c?a các ?ng d?ng l?p thay v? trong các ?ng d?ng đ?i tư?ng. Đi?u này làm tăng hi?u su?t b?i v? b?n có th? truy c?p m?t t?nh bi?n nhanh hơn b?n có th? truy c?p m?t m?c trong ?ng d?ng t? đi?n.

Đ? truy c?p các thành viên t?nh ?ng d?ng t? các trang trong Microsoft Visual C#.NET và Microsoft Visual Basic.NET, b?n ph?i s? d?ng các ClassName thu?c tính trong Global.asax đ? đ?t tên l?p ?ng d?ng c?a b?n. Cho Ví d?:
<%@ Application Language="C# | VB" ClassName="MyClass" %>
				
N?u m?t thành viên t?nh đư?c đ?t tên theo MyStaticMember trong t?p tin Global.asax c?a b?n, b?n có th? s? d?ng MyClass.MyStaticMember đ? truy c?p nó t? trang c?a b?n.

Thu?c tính

ID c?a bài: 312607 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
T? khóa: 
kbappdev kbhttpruntime kbinfo kbstate kbmt KB312607 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:312607

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com