2017-01-31 2 views
0

Je souhaite appeler la méthode d'action LogOut dont la vue n'a pas été créée à l'expiration de la session.Appel d'une méthode d'action à la fin de la session

J'ai écrit un script pour la session time-out mais je ne sais pas comment appeler la méthode d'action parce que toutes les méthodes que j'ai eu comme window.location etc localise la vue.

<script> 
      //session end 

     var sessionTimeoutWarning = @Session.Timeout; 

     var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000-55000; 
     setTimeout('SessionEnd()', sTimeout); 

    /* Here I want To call that AgentLogOut Method*/ 

     function SessionEnd() { 
      alert("Session Is Going To End in 1 min Please Login Again1"); 

      window.location = "/Agent/AgentLogIn"; 
     } 
</script> 

Et ce contrôleur de l'action cible à laquelle je veux appeler

public ActionResult AgentLogOut() 
     { 
      string SessionId = Session["LogInSession"].ToString(); 
      string OType = "LogOut"; 
      ProcedureName = "SP_Crud"; 
      XElement xl = new XElement("data", 
       new XAttribute("otype", OType), 
       new XElement("sessionId", SessionId), 
       new XElement("agentIp", AgentIp) 
       ); 
      objDal.ExecuteNonQuery(ProcedureName, CommandType.StoredProcedure, new MySqlParameter("@xml", xl.ToString())); 
      Session.Clear(); 
      Session.Abandon(); 

      return RedirectToAction("AgentLogIn","Agent"); 
     } 

J'ai essayé tous les moyens que je me knew.Suggest comment frapper seulement la méthode d'action.

+0

avez-vous à l'aide votre contrôleur et vue dans le même projet? –

+0

À quel problème faites-vous face? – Ankita

+0

apporte également quelques informations sur la fonction 'SessionEnd()'. cela fonctionnera correctement? –

Répondre

2

vous pouvez faire une demande ajax comme:

function SessionEnd() 
{ 
    $.ajax({ 
    type: "post", 
    url: "/Agent/AgentLogIn", 
    data:{data:value}, 
    success:function(response){ 
    //do some stuff like login page redirection 
    }, 
    error:function(){ 
    //do some stuff like login page redirection 
    } 
    }); 
} 
+0

J'ai essayé ceci mais cela rend la vue de LogOut mais j'ai créé la vue non pour le logOut. – Dashanan

+0

vous pouvez créer une vue vide que votre cadre nécessite –

+0

Oui cela fonctionnera mais augmente également le temps de réponse. – Dashanan

1
var sessionTimeoutWarning = @Session.Timeout; 

    var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000-55000; 
    setTimeout(function SessionEnd() { 
     alert("Session Is Going To End in 1 min Please Login Again1"); 
     window.location = "/Agent/AgentLogIn"; 
    }, sTimeout); 

OU

var sessionTimeoutWarning = @Session.Timeout; 

    var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000-55000; 
    setTimeout(SessionEnd, sTimeout); 



    function SessionEnd() { 
     alert("Session Is Going To End in 1 min Please Login Again1"); 
     window.location = "/Agent/AgentLogIn"; 
    } 

Remarque Assurez-vous: vous avez défini Session.Timeout avec valeur entière

+0

Script La partie fonctionne bien. Dites-moi comment appeler la méthode d'action. – Dashanan

+0

avez-vous essayé window.location = "/ Agent/AgentLogIn"; vous devriez essayer d'ajouter l'URL de base de votre projet –

+0

Oui j'ai essayé mais ceci doit également avoir une vue au moins mais je ne veux pas créer une vue pour ceci je veux juste appeler cette méthode d'action et insérer ces données dans la base de données. – Dashanan