2016-05-22 7 views
1

ich Sitzung erstellen, wenn Benutzer anmelden und Sitzung verwenden, um Zugriffsseite zu überprüfen, wenn ich Sitzung einige Zeit überprüfen erneut ausführen, wenn ich Seite aktualisieren oder auf andere Seite navigieren die Sitzung ist nicht null, es geht nicht um bestimmte Seite, es geht um Verfahren einige Zeit Sitzungswert, meine Methode in Web-Service erhalten einige Zeit return null und ich nenne sie JavascriptSitzung einige Zeit wieder Null und einige Zeit Reurn Wert

[WebMethod(EnableSession = true)]    
    public object CheckIfLoggedin() 
    { 
     try 
     { 
      return new { Result = resultEnum.ok, Records = GetUserID() }; 

     } 
     catch 
     { 
      return new { Result = resultEnum.error }; 
     } 

    } 
    private Guid? GetUserID() 
    { 
     if (Context.Session["User"] != null) 
     { 
      string userid = Context.Session["User"].ToString(); 
      if (userid != "") 
       return new Guid(userid); 
      else 
       return null; 
     } 
     else 
      return null; 
    } 

    function CheckIfLoggedin() { 

var status = 0; 

var ItemCount; 
$.ajax({ 

    type: "POST", 
    url: "../../../../_layouts/15/TripPlannerFrontend/TripPlannerSrv.asmx/CheckIfLoggedin", 

    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: true, 
    success: function (res) { 
     if (res.d.Result === 2) { 
      var userid = res.d.Records; 
      if (userid == null) { 
       // 
      } 
      else { 

       //window.location = "TripPlanner.aspx"; 
       var returnurl = GetQueryString("returnurl"); 
       if (returnurl != null && returnurl !== "") 
        window.location = returnurl; 
       else 
        window.location = "TripPlanner.aspx"; 
      } 

     } 
     else 
      console.log("try again"); 
    }, 
    error: function (response) { 
     console.log("try again"); 
    } 
}); 
    }; 
+0

überprüfen Sie web.config über Sitzung Ablaufzeit ... es kann ablaufen ... –

+0

wenn Sitzung abläuft, ich werde nicht aktivieren, um es zu lesen, wenn ich Seite aktualisieren wird es für immer verschwunden sein, aber wenn ich die Methode erneut aufrufen Ich kann die Sitzung lesen, ich habe ein seltsames Problem, wo die Sitzung manchmal null wird. Dieses Problem ist nicht sehr konsistent und manchmal ist die Sitzung null und manchmal nicht –

Antwort

1
verwenden

Das Problem ist, Sitzungsaffinität. Wenn Sie über mehrere Web-Frontends verfügen und ein Lastenausgleichsmodul Anforderungen an einen dieser SP-Server verteilt: Eine erste Anforderung wird möglicherweise an Server A weitergeleitet, dann wird die Sitzung erstellt, und wenn vom Client eine zweite Anforderung ausgegeben wird kann zu Server B umgeleitet werden, wo die Sitzung nicht existiert. In solchen Situationen empfiehlt es sich, den Load-Balancer für "Sitzungsaffinität" zu konfigurieren. Dies bedeutet, dass nach der Zuweisung eines der Web-Frontends für einen bestimmten Client alle nachfolgenden Anforderungen an dasselbe weitergeleitet werden Server. Bitte fragen Sie den Administrator des Load-Balancers, wenn eine Konfiguration der Sitzungsaffinität vorhanden ist, fragen Sie ihn nicht, ob dies auf seiner Ebene konfiguriert werden kann (dies hängt von der für den Lastausgleich verwendeten Technologie ab).

Verwandte Themen