2010-10-12 35 views
6

Tôi có một lớp được gọi là Global có nguồn gốc từ HttpApplication.Bối rối trên global.asax?

Nhưng kỳ lạ, tôi thấy rất nhiều các phương pháp bên Global trông giống như:

void Application_Start(object sender, EventArgs e) 
{ 
} 

Mã này chắc chắn được thực hiện bên trong phương pháp này, vì vậy phương pháp này đang được gọi là từ nơi nào đó, nhưng ở đâu? Các phương pháp không được đánh dấu quá tải?

Thứ hai, tôi bắt nguồn từ một lớp học từ Global, hãy gọi nó là GlobalFoo.

Một lần nữa, nếu tôi tạo một phương thức có tên là Application_Start(), nó sẽ được gọi bên trong lớp dẫn xuất của tôi, nếu không thì không có gì trong số Global sẽ được gọi để tôi có thể xuất phát từ một lớp trống.

Có ai có thể đưa ra lời khuyên nào không? Tôi có thiếu một số phần cơ bản của ASP.NET?

Trả lời

1

so the method is being called from somewhere, but where?

chức năng này được gọi là từ Application Pool (từ mỗi hồ bơi mà bạn có assign), để báo hiệu sự kiện khởi động/kết thúc của ứng dụng của bạn và giúp bạn với khởi tạo.

Mọi hồ bơi được chỉ định để chạy ứng dụng web của bạn đều chạy các chức năng đó.

asp.net là giúp bạn tạo các đối tượng/mã khác nhau bên ngoài hoặc không có thể chạy cùng nhau, và đó là lý do tại sao bạn thấy rằng tất cả mã đã đăng ký của mình chạy. Đó là một sự giúp đỡ để tạo ra nhiều hơn một "khởi động" thói quen mà làm suy nghĩ khác nhau.

is an example, mô-đun này chỉ kiểm tra giao thức bảo mật của chính anh ấy ... và bạn không cần phải thay đổi bất kỳ thứ gì trên mã của mình, chỉ cần đăng ký nó.

-1

Các tập tin Global.asax là một tập tin tùy chọn dùng để khai báo và xử lý các ứng dụng và cấp phiên các sự kiện và đối tượng cho một trang web ASP.NET chạy trên một IIS Web Server

một số sự kiện quan trọng trong việc này tệp là:

  • Application_Init: Kích hoạt khi ứng dụng khởi chạy lần đầu tiên.
  • Application_Start: Kích hoạt lần đầu tiên ứng dụng khởi động.
  • Session_Start: Kích hoạt lần đầu tiên khi phiên của người dùng được bắt đầu.
  • Application_BeginRequest: Kích hoạt mỗi khi có yêu cầu mới.
  • Application_EndRequest: Kích hoạt khi ứng dụng chấm dứt.
  • Application_AuthenticateRequest: Cho biết yêu cầu đã sẵn sàng để được xác thực.
  • Application_Error: Kích hoạt khi xảy ra lỗi không được xử lý trong ứng dụng.
  • Session_End: Kích hoạt bất cứ khi nào một phiên người dùng duy nhất kết thúc hoặc hết giờ.
  • Application_End: Kích hoạt khi ứng dụng kết thúc hoặc hết giờ (Thường được sử dụng cho logic dọn dẹp ứng dụng).

Để biết danh sách đầy đủ các sự kiện Global.asax, hãy xem "Global.asax Events".

+0

Tôi không thực sự quan tâm đến các sự kiện, Im nhầm lẫn về nơi/cách chúng được gọi – maxp

0

IIS gọi các sự kiện Global.asax khác nhau thông qua bộ lọc asp.net isapi.

Có lẽ this article sẽ giúp giải thích.

Các vấn đề liên quan