If you are building a web app using “Forms” as a mode of authentication, there’s really not much to it when it comes to extending a session automatically.
What I am suggesting is that your web session will extend on its own so long as you have defined slidingExpiration attribute in your web.config file like so:
<authentication mode="Forms"> <forms name=".ASPXAUTH" loginUrl="~/Login.aspx" timeout="20" slidingExpiration="true"></forms> </authentication>
Now, if you are using the authentication mode as “Windows“, there’s no support for the slidingExpiration attribute. For that, you can implement a solution in jQuery by simply creating a dummy HTML file and calling it anything you like. In the example below, I’ve named it AjaxDemo.html. See code below.
One thing to note here is that I am concatenating Date and Time when making an asynchronous call to AjaxDemo.html. This is done to ensure that a unique value is returned from the server. This step is crucial in extending the session timeout beyond its default threshold of 20 minutes.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> <title>Session Timeout</title> <script type="text/javascript"> var sessionDelay = 5000; // 5 seconds $(function () { $("#btnExtendSession").click( function () { keepAlive(); }); }); function keepAlive() { var d = new Date(); $.get('AjaxDemo.html?=' + d.getTime(), function () { timer = setTimeout(keepAlive, sessionDelay); clearTimeout(timer); }); } </script> </head> <body> <button id="btnExtendSession">Extend Session</button> </body> </html>
When you click on the button “Extend Session” and open dev tools, inside the Network tab, you would notice a unique value appended to AjaxDemo.html’s query string. See below:
Hope you found the post useful.