会话未保留在Ajax中调用SQLServer模式

时间:2014-02-15 15:14:28

标签: ajax session

我尝试在用户登录时在Ajax调用期间创建会话。当我处于Inproc模式时,一切正常。 当我将其更改为SQLServere模式时,每当我在调试模式下看到创建会话时,在执行回发之后保留在Ajax期间创建的任何会话。          在按钮单击或页面加载(非Ajax)期间创建的其他会话停留在哪里..任何关于它为什么不保留的想法?

这是一个非常好的开端.. ajax调用是

function Authenticate(userID) {
            $.ajax({
                type: "POST",
                url: "/GlobalService.asmx/CreateAuthentication",
                data: JSON.stringify({ ID: userID }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                   //Some simple logic to show username
                }
            });

ajax调用背后的代码

 [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
 [WebMethod(EnableSession = true)]
 public void CreateAuthentication(string UserID)
        {
            if (UserID != null)
            {
                try
                {
                    HttpContext.Current.Session["UserID"] = UserID;
                    }
                catch (Exception ex)
                {
                }
            }
        }       

不工作配置:

  <sessionState mode="SQLServer" sqlConnectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI" cookieless="false" timeout="3" />

1 个答案:

答案 0 :(得分:0)

这是很久以前的事了但是我在这里

(1)如果你的会话设置不正确,catch all块会掩盖任何错误。

(2)要跟踪错误,我会(在IE11中)按F12,跟踪网络呼叫。您可能会在响应部分看到一条错误消息,说明为什么它不能将会话写入数据库

此外,您使用的是SQLExpress,因此我认为默认情况下会话到期无效,但这不是