По умолчанию IIS просто возвращает страницу входа с кодом состояния HTTP 200 по истечении сеанса. Это заставляет ваш ajax не воспринимать это как ошибку.
Таким образом, вам нужно выполнить проверку действия вашего контроллера, чтобы узнать, истек ли сеанс, и, если это так, вы можете вернуть HttpStatusCodeResult(HttpStatusCode.Unauthorized)
.
После этого в вашем ajax вы можете использовать что-то вроде этого:
$.ajax({
//...
error: function(data, textStatus, xhr) {
if(xhr.status == "401"){ window.location.href = "/login";
}
}