Controlling Session Behavior in Asp.Net MVC
Sessions in Asp.Net MVC are used across requests for storing data. Asp.Net MVC manages sessions for all controllers in the application irrespective of the fact data values are stored in the session or not therefore making it time consuming.The application performance is affected since session is stored on server side and server memory is consumed.
Sessionless Controller
There is a possibility that some of the controllers in the application does not make use of session state feature. In such scenario the controller session can be disabled. For disabling controller's session sessionState attribute is used for setting session state behavior to disabled as a result there is slight performance improvement in the application. System.Web.SessionState is required for controlling session state.
Example to demonstrate Sessionless Controller :-
[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]
public class HomeController : Controller
{
// code
}
In above example by using sessionState attribute and marking it as disabled makes the controller sessionless.
The specification of type of session support that is required for handling the request is termed as SessionStateBehavior. It can have different type of values :-
- Default : The session state behavior for the request can be determined by using the default ASP.NET logic.
- Disabled : The state of the session is disabled entirely.
- ReadOnly : The behaviour of the sessionState becomes read only i.e data can be read from sessionState but data cannot be writtrn on the session.
- Required : The behaviour of the sessionState becomes full read-write.
An exception is thrown if the controller session is marked as disabled and session is accessed within the controller or TempData make use of session state for data values storage across requests.
Example :-
SessionState(System.Web.SessionState.SessionStateBehavior. Disabled)]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Tesing";
Session["test"] = "Testing of Session less controller";
return View();
}
}
In above example a NullReferenceException will be thrown where Session variable is used.
0 Comment(s)