 <p>I have just implemented a solution like the one asked about here and it seems to work. I have an <code>MVC</code> application and have this code in my _Layout.chtml page but it could work in an <code>asp.net</code> app by placing it in the master page I would think. I am using local session storage via the <code>amplify.js</code> plugin. I use local session storage because as Mr Grieves says there could be a situation where a user is accessing the application in a way that does not cause a page refresh or redirect but still resets the session timeout on the server. </p> <pre><code>$(document).ready(function () { var sessionTimeout = '@(Session.Timeout)'; //from server at startup amplify.store.sessionStorage("sessionTimeout", sessionTimeout); amplify.store.sessionStorage("timeLeft", sessionTimeout); setInterval(checkSession, 60000); // run checkSession this every 1 minute function checkSession() { var timeLeft = amplify.store.sessionStorage("timeLeft"); timeLeft--; // decrement by 1 minute amplify.store.sessionStorage("timeLeft", timeLeft); if (timeLeft &lt;= 10) { alert("You have " + timeLeft + " minutes before session timeout. "); } } }); </code></pre> <p>Then in a page where users never cause a page refresh but still hit the server thereby causing a reset of their session I put this on a button click event:</p> <pre><code>$('#MyButton').click(function (e) { //Some Code that causes session reset but not page refresh here amplify.store.sessionStorage("sessionTimeout", 60); //default session timeout amplify.store.sessionStorage("timeLeft", 60); }); </code></pre> <p>Using local session storage allows my _Layout.chtml code to see that the session has been reset here even though a page never got refreshed or redirected. </p>