1

我的服务器端代码:

    [WebMethod(CacheDuration = 0, EnableSession = true)]
    public static int UserID()
    {
        if (HttpContext.Current.Session["UserID"] == null) return 0;
        int UserID = Convert.ToInt32(HttpContext.Current.Session["UserID"]);
        return (UserID);

    }

我的客户端代码:

$.ajax({
    type: "POST", cache: false,
    url: "Login.aspx/UserID",
    data: "{'r':" + rnd() + "}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        alert(msg);
    }
});

此代码在我的本地主机上运行良好。和“UserID”ajax 调用,返回正确的 Session 参数值。

但是当我尝试在服务器上上传我的网站时,“UserID”ajax 调用总是返回 false!

我的服务器是 asp.net 2.0,我使用的是 jquery 1.3.2

所以请帮忙解决这个问题。

4

2 回答 2

1

阅读这篇文章:ASP.NET 会话状态常见问题解答 我在以下问题中找到了答案:

  1. 问:会话状态适用于某些 Web 服务器,但不适用于其他 Web 服务器。A:可能是机器名问题。请参阅http://support.microsoft.com/default.aspx?scid=kb;EN-US;q316112
  2. 问:为什么我的 Session 变量在使用 InProc 模式时经常丢失?A: 可能是因为应用程序回收。请参阅http://support.microsoft.com/default.aspx?scid=kb;en-us;Q316148

将 sessionState 模式更改为“StateServer”解决了这个问题。使用下面的代码:

<sessionState mode="StateServer"
  stateConnectionString="tcpip=localhost:42424"
  cookieless="false"
  timeout="999"/>
于 2009-08-02T12:47:09.690 回答
0

有几件事要检查:

您是否使用 WebFarm 配置?在 WebFarm 配置中使用会话时可能会出现问题。

您是否使用 Fiddler 或 FireBug 等工具检查您的网络流量?AJAX 调用期间是否发送了 ASP.NET Auth cookie?

你能确认你的会话变量是有效的吗?

于 2009-07-31T01:06:42.297 回答