Explain SERVER-SIDE STRATEGIES: SESSION STATE, TEMP DATA,USING HTTPCONTEXT
SERVER-SIDE STRATEGIES: SESSION STATE, TEMP DATA, USING HTTPCONTEXT
1)Session State
- Session state is an ASP.NET Core mechanism to store user data while the user browses the application.
- It uses a store maintained by the application to persist data across requests from a client. We should store critical application data in the user’s database and we should cache it in a session only as a performance optimization if required.
- ASP.NET Core maintains the session state by providing a cookie to the client that contains a session ID. The browser sends this cookie to the application with each request. The application uses the session ID to fetch the session data.
A Session State Example
- We need to configure the session state before using it in our application. This can be done in the ConfigureServices() method in the Startup. cs class:
services.AddSession();
- The order of configuration is important and we should invoke the UseSession() before invoking UseMVC().
- Let’s create a controller with endpoints to set and read a value from the session:
public class WelcomeController: Controller
{
public IActionResult Index() {
HttpContext.Session.SetString("Name", "John");
HttpContext.Session.SetInt32("Age", 32);
return View();
}
public IActionResult Get()
{
User u = new User()
{
Name= HttpContext.Session.GetString("Name"),
Age= HttpContext.Session.GetInt32("Age").Value
};
return View(u);
}
}
- The Index() method sets the values into session and Get() the method reads the values from the session and passes them into the view.
- Let’s auto-generate a view to display the model values by right-clicking on the Get() method and using the “Add View” option.
- Now let’s run the application and navigate to /welcome.
- This will set the session values.
- Now let’s navigate to /welcome/get:
2) TempData
- TempData property which can be used to store data until it is read.
- TempData is particularly useful when we require the data for more than a single request. We can access them from controllers and views.
- TempData is implemented by TempData providers using either cookies or session state.
Example
- Let’s create a controller with three endpoints. In the First() method, let’s set a value into TempData. Then let’s try to read it in Second() and Third() methods:
public class TempDataController: Controller{
public IActionResult First(){
TempData["UserId"]= 101;
return View();
}
public IActionResult Second(){
var userId= TempData["UserId"] ?? null;
return View();
}
public IActionResult Third(){
var userId= TempData["UserId"] ?? null;
return View();
}
}
3) Using HttpContext
- A HttpContext object holds information about the current HTTP request. The important point is, whenever we make a new HTTP request or response then the Httpcontext object is created. Each time it is created it creates a server current state of an HTTP request and response.
- It can hold information like Request, Response, Server, Session, Item, Cache, User's information like authentication and authorization, and much more.
- As the request is created in each HTTP request, it ends too after the finish of each HTTP request or response.
Example to Check request processing time using
HttpContext class
This example checks the uses of the HttpContext class. In the global.aspx page we know that a BeginRequest() and EndRequest() is executed every time before any HTTP request. In those events, we will set a value to the context object and will detect the request processing time.
protected void Application_BeginRequest(object sender, EventArgs e) {
HttpContext.Current.Items.Add("Begintime", DateTime.Now.ToLongTimeString());
}
protected void Application_EndRequest(object sender, EventArgs e) {
TimeSpan diff = Convert.ToDateTime(DateTime.Now.ToLongTimeString()) -
Convert.ToDateTime(HttpContext.Current.Items["Begintime"].ToString());
}
Comments
Post a Comment