Tôi gặp sự cố rất kỳ lạ với phiên trên ASP.NET 2.0. Hệ thống tôi đang làm việc trên sử dụng các biến phiên để lưu trữ các tham số trên các đối tượng (như câu hỏi và câu trả lời) để tạo báo cáo. Đây là các trường hợp của các lớp có cùng tên và do đó chúng được điền thông số như sau:Phiên ASP.NET kết thúc bất ngờ
Báo cáo này được tạo thông qua 4 trang aspx. Đầu tiên xác định thông số vị trí và ngày, trang thứ hai lưu trữ câu hỏi và câu trả lời của cửa hàng thứ ba. Màn hình cuối cùng liên kết đến các báo cáo được tạo trên các định dạng Excel và HTML. Tất cả dữ liệu biến được lưu trữ trên phiên, và mọi thứ diễn ra tốt đẹp, cho đến trang cuối cùng, khi một thứ như Session.Abandon() xảy ra, sự kiện Session_End được kích hoạt và tất cả các biến bị mất. Điều này xảy ra chỉ một lần một ngày, đối với mỗi người dùng đã đăng nhập vào lần sử dụng đầu tiên của báo cáo, và sau đó bạn có thể thử cả ngày và không nhìn thấy nó lần nữa.
Sự cố xảy ra trên cùng một trang LUÔN, và chế độ phiên là InProc.
tôi đã thực hiện kiểm chứng thực sau đây:
- Kiểm tra nếu có bất kỳ Session.Abandon() hoặc Session.Clear() lệnh. Không có gì cả.
- Thời gian chờ của phiên được kiểm tra, được đặt thành 18 phút và sự cố xảy ra bất cứ lúc nào như đã nêu ở trên, bất kể bạn đã sử dụng hết thời gian trong 18 phút.
- Thời gian chờ của biểu mẫu được kiểm tra, trong Xác thực. Nó cũng được thiết lập đến 18 phút.
- Tôi đã học được rằng có lỗi với Server.Transfer() đôi khi có thể xóa phiên và viewstate, và đã thay thế bằng Response.Redirec()
- Đã theo dõi phiên phiên theo dòng mã và mọi thứ diễn ra tốt đẹp, và khi trang được tải hoàn toàn, nó chỉ đơn giản là chết. Tất cả các biến đã biến mất, nhưng phiên vẫn hoạt động.
- Theo như tôi quan tâm, IIS được cấu hình đúng. Tôi không có quyền truy cập vào nó, nhưng tất cả các hệ thống khác hoạt động hoàn hảo.
- Cũng đã phân tích một số hệ thống nói trên tìm kiếm một số đầu mối về những gì có thể xảy ra, nhưng tệp web.config của chúng rất giống với tệp tôi gặp sự cố và không có mã đặc biệt nào được triển khai để tương tác với phiên khác nhau.
- Cũng nghĩ về giám sát IIS để khởi động lại ứng dụng, nhưng tôi chắc chắn nó không vượt quá giới hạn mặc định là 15. Tuy nhiên, tôi không có quyền truy cập vào máy chủ IIS và tất cả các thử nghiệm được thực hiện trên máy tính của tôi đang sử dụng ASP. Máy chủ phát triển NET. Vấn đề xảy ra trên cả hai.
- Đã kiểm tra khả năng tái chế quy trình, chẳng hạn như thay đổi tệp .config và asax, thay đổi thành/trên thư mục bin, không có sự cố nào xảy ra.
hạn chế sau được áp dụng:
- Không thể thay đổi chế độ phiên để khác hơn InProc do các chính sách công ty.
- Quá trình tạo "báo cáo" được tạo thông qua 4 trang. Tôi không đồng ý với điều này, nhưng không thể làm lại nó do hạn chế về thời gian và ngân sách.
Bất kỳ suy nghĩ hoặc giải pháp nào đều hữu ích. Tôi sẽ giữ liên lạc cho bất kỳ bản cập nhật và kiểm tra nào cần thiết.
Bạn có quyền truy cập vào cơ chế lược tả không? Chúng tôi đã gặp phải vấn đề về xả phiên khi lượng bộ nhớ dành riêng cho w3wp vượt quá số lượng được chỉ định trong machine.config. ASP.NET quầy hiệu suất đã giúp chúng tôi rất nhiều trong gỡ lỗi này. –
Chúng tôi không sử dụng tệp machine.config. Theo những gì tôi biết, tệp này là trang web rộng và sẽ ảnh hưởng đến các ứng dụng khác trong cùng một trang web trên IIS. Cơ sở hạ tầng máy chủ trên công ty áp dụng tất cả các hệ thống trong cùng một trang web, như các thư mục ảo. –
Bạn có thể đăng mã để hiển thị vào thời điểm session_end được kích hoạt không? Và bạn sử dụng những gì để tạo báo cáo? kiểm tra xem bạn có vô tình âm thầm xử lý bất kỳ ngoại lệ nào không (ví dụ trong application_error). (nếu các công cụ báo cáo là bên thứ 3 chạy trang mà không có nó để xem nếu nó vẫn xảy ra). – Jeroen