2016-06-24 28 views
6

Trong Asp.net WebForms có một sự kiện được gọi là Seesion_End() trong global.asax, bất cứ khi nào session hết thời gian hoặc bạn gọi Session.Abandon() xử lý sự kiện này được thực hiện, tôi cần phải có loại hành vi tương tự trong asp.net Core, là nó có thể?Có Session.Abandon() asp.net Core

+0

Tôi nghĩ bạn nên nói lại câu hỏi của bạn. Khó trả lời! – Thomas

+1

Bạn đã thử Session.Clear() chưa? – Tratcher

+0

Tôi cần nắm bắt sự kiện khi phiên được tự động hết thời gian chờ, có bất kỳ lý do nào để nắm bắt sự kiện đó hoặc có bất kỳ sự kiện nào không? –

Trả lời

0

docs bao gồm hầu hết điều này. Thời gian chờ của phiên được đặt như sau:

services.AddSession(options => 
{ 
    options.IdleTimeout = TimeSpan.FromSeconds(10); 
}); 

Nhưng vì nó tồn tại là cookie, cookie cũng có ngày hết hạn. Vì vậy, nếu IdleTimeout hết hạn, phiên sẽ hết hạn. Nếu cookie hết hạn, phiên sẽ biến mất. Nếu cookie bị xóa, phiên sẽ biến mất.

Gọi Session.Clear() xóa nội dung của phiên nhưng giữ nguyên phiên (còn gọi là cookie không bị xóa) như được mô tả trong source.

+0

trong Asp.net WebForms có cái gì đó được gọi là Seesion_End() trong global.asax, bất cứ khi nào phiên là timeout hoặc bạn gọi Session.Abandon() xử lý sự kiện này được thực hiện, tôi cần phải có loại tương tự của hành vi trong asp.net Core, là nó có thể? –

+0

Vì vậy, không có cách nào để làm mất hiệu lực một phiên, ví dụ: khi người dùng đang sử dụng nút đăng xuất? Điều gì sẽ là cách được khuyến nghị để vô hiệu hóa một phiên ngoài việc thiết lập thời gian chờ nhàn rỗi rất thấp. Ngoài ra những gì giá trị có thể được kiểm tra để đảm bảo rằng thời gian chờ thực sự mất hiệu lực phiên? Nó bằng cách nào đó dường như rằng việc thực hiện Session trong. Core Core không được thực hiện đầy đủ, hoặc tôi đang thiếu một cái gì đó ở đây. – vm370

+0

@ vm370 Như đã đề cập bởi Tratcher ở trên, cách được khuyến nghị để vô hiệu hóa một phiên từ mã là gọi 'Session.Clear()'. Có một số cuộc thảo luận thêm ở đây: [Bài phát hành số 27] (https://github.com/aspnet/Session/issues/27) – TallMcPaul

0

Bạn có thể xóa phiên bằng cách đơn giản gọi:

HttpContext.Session.Clear();

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