会话一段时间reull Null和一些时间reurn值

时间:2016-05-22 09:24:08

标签: javascript sharepoint webserver

我在用户登录时创建会话并使用会话来检查访问页面,当我检查会话一段时间重新运行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");
    }
});
   };

1 个答案:

答案 0 :(得分:1)

问题是会话亲和力。如果您有多个Web前端并且负载均衡器将请求分派给这些SP服务器之一:第一个请求可能会路由到服务器A,然后会话创建,当客户端发出第二个请求时,可以重定向到服务器B,其中会话不存在。

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