Tôi cần biết vì tôi phải đóng một cách rõ ràng một số tài nguyên từ xa được liên kết với phiên của người dùng.IIS6: Khi một nhóm ứng dụng được tái chế, Session_End có được gọi không?
Trả lời
Tôi không đồng ý với Darin. Tôi gọi một hàm trong Session_End để ghi lại kết thúc phiên. Tôi chưa thử nghiệm điều này một cách rõ ràng, nhưng tôi đã xem nhật ký của mình trong vài lần qua rằng nhóm ứng dụng đã được tái chế. Hàm đã được gọi và kết thúc các phiên hoạt động đã được ghi lại.
Điều này xảy ra cả khi hồ bơi ứng dụng được tái chế theo lịch biểu và khi nó được tái chế vì tôi đã triển khai một số dll mới.
Nếu tôi nhớ chính xác (đã lâu kể từ khi tôi đọc tài liệu) có các phiên hoạt động sẽ trì hoãn bộ định thời bình thường của bể bơi ứng dụng (sẽ kích hoạt khi tài nguyên được giải phóng) vì các ngân hàng máy chủ hoạt động có nghĩa là có tiếp tục cần. Sau khi các phiên hết hạn (và kích hoạt sự kiện session_end), bộ đếm thời gian của ứng dụng sẽ bắt đầu lại và đếm ngược, cuối cùng là kích hoạt trước khi nhóm giải phóng tài nguyên của riêng nó và chấm dứt ứng dụng.
Đó là trong trường hợp bình thường, cần lưu ý rằng sự kiện session_end không được bảo đảm để kích hoạt (có sử dụng các kịch bản rất cụ thể), tôi nghĩ rằng điều này chủ yếu liên quan đến các phiên bản IIS bị lỗi hoặc App Pool tái chế cho OOM hoặc lỗi. Nó sử dụng được trừ khi bạn đang sử dụng chỉ là một trong các loại phiên (máy chủ nhà nước tôi tin) nó sẽ không đáng tin cậy cháy. Điều này có thể khác bây giờ.
Nếu bạn cần đảm bảo rằng tài nguyên được giải phóng, tôi không chắc chắn session_end là nơi thích hợp để làm điều đó. Bạn có thể nâng cấp nó lên Bộ nhớ cache ứng dụng hoặc Bộ nhớ cache HTTP và sử dụng các khóa duy nhất của phiên với các sự kiện dọn dẹp định kỳ không? Điều đó có thể đáng tin cậy hơn (nhiều mã hơn) nhưng đáng tin cậy hơn. Đó là kinh nghiệm chung của tôi rằng session_end cháy khá đáng tin cậy, nhưng tôi đã thấy nó thất bại dưới tải trọng đáng kể (100 giây mỗi giây) và tôi biết khi nào bạn bắt đầu nói về các trang trại máy chủ, nó cũng phức tạp hơn nhiều.
Tôi chỉ nói khoảng 20-30 người dùng tối đa, nhưng chi phí để mở kết nối rất cao và tôi không tin tưởng máy chủ từ xa đóng. –
Lưu ý rằng Session_End chỉ được gọi nếu bạn sử dụng chế độ phiên Inproc. Đối với các chế độ khác (bao gồm chế độ trạng thái phiên SQL), sự kiện này không bao giờ được nâng lên.
- 1. Phát hiện khi ứng dụng ASP.NET tái chế
- 2. Không thể nén bitmap được tái chế
- 3. Chế độ xemWillDisappear/viewDidDisappear có được gọi khi chuyển đổi ứng dụng không?
- 4. Cài đặt tái chế miền ứng dụng trên mod_mono & Apache
- 5. ViewDidAppear không được gọi khi mở ứng dụng từ nền
- 6. applicationWillTerminate không được gọi khi ứng dụng dừng từ Xcode
- 7. Có thể một FormsAuthenticationTicket tồn tại trong quá trình tái chế hồ bơi ứng dụng không?
- 8. Chức năng iOS sẽ được gọi một lần (khi ứng dụng được khởi tạo)
- 9. Có PN tuy nhiên ứng dụng: ứng dụng didReceiveRemoteNotification: không được kích hoạt khi biểu tượng ứng dụng được chọn
- 10. Ứng dụngDidFinishLaunching: được gọi khi ứng dụng được cập nhật và khởi chạy lần đầu tiên?
- 11. Có phương pháp UIViewController được tự động gọi khi ứng dụng chuyển sang nền không?
- 12. requestLayout() không có tác dụng khi được gọi từ onSizeChanged()?
- 13. Làm thế nào để kiểm tra hồ bơi ứng dụng cuối cùng được tái chế
- 14. Roslyn SyntaxNodes có được tái sử dụng không?
- 15. Hồ bơi ứng dụng IIS 7.0 tái chế mỗi phút
- 16. EmberJS có một sự kiện được gọi sau khi chế độ xem Handlebars đã được cập nhật không?
- 17. Khi sử dụng clipToPadding trong ListView của các mặt hàng được tái chế sớm
- 18. Yêu cầu ứng dụng web IIS 7.5 đầu tiên sau khi tái chế hồ bơi ứng dụng rất chậm
- 19. onConfigurationChanged không được gọi khi setRequestedConfiguration đã được sử dụng
- 20. Xác định lần cuối cùng một Hồ bơi Ứng dụng đã tái chế
- 21. Điều gì gây ra một hồ bơi ứng dụng trong IIS để tái chế?
- 22. Android: Tôi có nên gọi cho LicenseChecker mỗi khi ứng dụng được mở không?
- 23. Có phương pháp nào trong appDelegate được gọi khi ứng dụng gặp sự cố không?
- 24. Làm cách nào tôi có thể tái chế một ứng dụng riêng của ứng dụng web .net?
- 25. Người thực thi có nghĩa là được tái sử dụng không?
- 26. Destructor không được gọi khi một ngoại lệ được ném
- 27. HttpContext.Current.Items được tái sử dụng?
- 28. Tại sao một lớp học được gọi là "được gọi" khi không được bắt đầu? - Python
- 29. Android - có một cuộc gọi lại được gọi ngay sau khi onResume() không?
- 30. Ứng dụng Android KHÔNG được khởi chạy khi nhận Intent
Đồng ý, chỉ cần kiểm tra và kích hoạt :-) –