Tôi là một ứng dụng có một số hành động của bộ điều khiển gọi các dịch vụ web của bên thứ ba chậm. Những hành động này được gọi bằng cách sử dụng các cuộc gọi AJAX từ trang.ASP.NET MVC: làm thế nào để ngăn chặn khóa phiên?
Tôi có thể sử dụng bộ điều khiển không đồng bộ để giải phóng nhóm chủ đề ASP.NET miễn phí, điều đó thật tuyệt. Nhưng những gì về phiên? Nếu tôi sử dụng phiên InProc và yêu cầu được thực hiện cho "hành động chậm" thì người dùng cụ thể không thể thực hiện bất kỳ yêu cầu nào đối với ứng dụng vì phiên của anh ấy bị khóa bằng lệnh "chậm" đầu tiên.
Trong PHP có một phương pháp session_write_close()
mà tôi có thể sử dụng như sau:
- Chấp nhận yêu cầu của người sử dụng để làm chậm hành động
- Kiểm tra quyền của người sử dụng để truy cập điều khiển/hành động dựa trên dữ liệu phiên
- Viết nội dung nào đó cho phiên nếu cần
- Gọi
session_write_close()
. Từ phiên điểm này được đóng theo yêu cầu này và bất kỳ yêu cầu khác từ cùng một người dùng có thể truy cập vào nó - Thực hiện cuộc gọi chậm của tôi (có thể trong một số cách async)
Tôi biết rằng tôi có thể vô hiệu hóa trạng thái phiên ở cấp độ bộ điều khiển sử dụng thuộc tính [SessionState]
, nhưng đó không phải là giải pháp.
Bất kỳ ý tưởng nào?
Tại sao bạn nghĩ phiên được "khóa" bởi bất kỳ yêu cầu nào? –
Dưới đây là chi tiết: http://stackoverflow.com/questions/3666556/a-non-locking-in-process-asp-net-session-state-store và đây là một câu hỏi khác của tôi về chủ đề tương tự: http: // stackoverflow.com/questions/2438493/the-whole-site-is-blocked-while-one-page-is-waiting-for-blocking-operation-php – artvolk
Đây là mô tả cuối cùng: http://stackoverflow.com/ câu hỏi/3629709/i-just-discover-why-all-asp-net-các trang web-đang-chậm-và-i-am-cố gắng-to-work-out – artvolk