Before thinking about going down or telling me "google it", please read this issue carefully. This is an old / classic problem, but the old / classic solution no longer works. Here is a very simple script to play in Visual Studio 2013/2015:
1) Create an ASP.NET web application using the MVC pattern:

2) Open Controllers \ HomeController.cs and add the attribute to the controller and the "Sleep" action:
[SessionState( System.Web.SessionState.SessionStateBehavior.Disabled)] public class HomeController : Controller { public ActionResult Sleep(int? time) { System.Threading.Thread.Sleep(time ?? 3000); return Content("OK"); } public ActionResult Index() { ...
3) Open the file: Views \ Home \ Index.cshtml and add / replace the html contents as follows:
<script> function ReqClick() { var startTime = Date(); $.ajax("/Home/Sleep") .success(function () { var log = $("#log"); var endTime = Date(); log.text(log.text() + "Start: " + startTime.toString() + " === " + endTime.toString()); }); }; </script> <button type="button" onclick="ReqClick();"> Request </button> <div> <textarea id="log" style="width:640px; height:480px"></textarea> </div>
4) Run it (it doesn't matter if you use IIS or IIS Express or Vs Dev Server) - Open Home / Index. Press F12 to open the developer tool, open the network tab. On the home page, click the "Request" button twice quickly. You can see that the second request takes almost 6 seconds:


In debug mode in the controller, you can see that Session is null:

Cookies are completely empty (no ASP.NET session identifier) 
Please let me know what I am missing?
Adding the following setting to web.config also does not help:
<sessionState mode="Off"/> <pages enableSessionState="ReadOnly"/>
source share