Computer >> Máy Tính >  >> Lập trình >> C#

Làm cách nào để kích hoạt Session trong C # ASP.NET Core?

Phiên là một tính năng trong ASP.NET Core cho phép chúng tôi lưu / lưu trữ dữ liệu người dùng.

Session lưu trữ dữ liệu trong từ điển trên Server và SessionId được sử dụng làm khóa. SessionId được lưu trữ trên máy khách tại cookie. Cookie SessionId được gửi theo mọi yêu cầu.

Cookie SessionId dành cho mỗi trình duyệt và nó không thể được chia sẻ giữa các trình duyệt.

Không có thời gian chờ nào được chỉ định cho cookie SessionId và chúng sẽ bị xóa khi phiên Trình duyệt kết thúc.

Ở cuối Máy chủ, phiên được giữ lại trong một thời gian giới hạn. Thời gian chờ phiên mặc định với Máy chủ là 20 phút nhưng có thể cấu hình được.

Microsoft.AspNetCore.Session gói cung cấp phần mềm trung gian để quản lý các phiên trong ASP.NET Core. Để sử dụng phiên trong Ứng dụng của chúng tôi, chúng tôi cần thêm gói này làm phần phụ thuộc trong tệp project.json.

Bước tiếp theo là định cấu hình phiên trong lớp Khởi động.

Chúng ta cần gọi phương thức "AddSession" trong phương thức ConfigureServices của lớp khởi động.

Phương thức "AddSession" có một phương thức quá tải, chấp nhận các khái niệm khác nhau như Thời gian chờ không hoạt động, Tên cookie và Tên miền cookie, v.v.

Nếu chúng tôi không vượt qua các tùy chọn phiên, hệ thống sẽ lấy các tùy chọn mặc định

Ví dụ

public class Startup {
   public void Configure(IApplicationBuilder app){
      app.UseSession();
      app.UseMvc();
      app.Run(context => {
         return context.Response.WriteAsync("Hello World!");
      });
   }
   public void ConfigureServices(IServiceCollection services){
      services.AddMvc();
      services.AddSession(options => {
         options.IdleTimeout = TimeSpan.FromMinutes(60);
      });
   }
}

Cách truy cập phiên

public class HomeController : Controller{
   [Route("home/index")]
   public IActionResult Index(){
      HttpContext.Session.SetString("product","laptop");
      return View();
   }
   [Route("home/GetSessionData")]
   public IActionResult GetSessionData(){
      ViewBag.data = HttpContext.Session.GetString("product");;
      return View();
   }
}