Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 会话某个时间reurn Null和某个时间reurn值_Javascript_Sharepoint_Webserver - Fatal编程技术网

Javascript 会话某个时间reurn Null和某个时间reurn值

Javascript 会话某个时间reurn Null和某个时间reurn值,javascript,sharepoint,webserver,Javascript,Sharepoint,Webserver,当用户登录并使用会话检查访问页面时,我创建会话。当我检查会话时,如果我刷新页面或导航到其他页面,则重新运行null。会话不为null,它与特定页面无关,它与方法有关。一段时间返回null一段时间获取会话值,我在web服务中的方法,我使用javascript调用它 [WebMethod(EnableSession = true)] public object CheckIfLoggedin() { try {

当用户登录并使用会话检查访问页面时,我创建会话。当我检查会话时,如果我刷新页面或导航到其他页面,则重新运行null。会话不为null,它与特定页面无关,它与方法有关。一段时间返回null一段时间获取会话值,我在web服务中的方法,我使用javascript调用它

    [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");
    }
});
   };

问题在于会话亲和力。如果您有多个Web前端和一个负载平衡器将请求发送到其中一个SP服务器:第一个请求可能被路由到服务器a,然后创建会话,当客户端发出第二个请求时,它可能被重定向到不存在会话的服务器B


在这种情况下,最好的方法是为“会话相关性”配置负载平衡器:这意味着一旦为给定的客户端分配了一个Web前端,所有后续请求都将重定向到同一服务器。请询问负载平衡器管理员是否有会话关联配置,如果没有,请询问他是否可以在其级别进行配置(这取决于用于负载平衡的技术)

检查web.config关于会话过期时间的信息…它可能会过期…如果会话过期,我将无法读取它,如果我刷新页面,它将永远消失,但是如果我再次调用该方法,我可以读取会话,我会面临一个奇怪的问题,会话有时会变为null。这个问题不是很一致,有时会话为空,有时不为空