会话状态不会因调用页面方法而保留
-
06-07-2019 - |
题
我的服务器端代码:
[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);
}
});
此代码在我的localhost上运行良好。 和“UserID” ajax调用,返回Session参数的正确值。
但是当我尝试在服务器上上传我的网站时,“UserID” ajax调用总是返回false !!
我的服务器是asp.net 2.0,我正在使用jquery 1.3.2
所以请帮助解决这个问题。
解决方案
阅读本文: ASP.NET会话状态常见问题解答 我在这个问题中找到了答案:
- 问:会话状态适用于某些Web服务器,但不适用于其他Web服务器。 答:也许机器名称问题。请参阅 http://support.microsoft.com/default.aspx ?scid = kb; EN-US; q316112 。
- 问:使用InProc模式时,为什么会话变量经常丢失? 答:可能是因为应用程序回收。请参阅 http://support.microsoft.com/default.aspx ?scid = kb; en-us; Q316148 醇>
将sessionState模式更改为“StateServer”解决了这个问题。 使用以下代码:
<sessionState mode="StateServer"
stateConnectionString="tcpip=localhost:42424"
cookieless="false"
timeout="999"/>
其他提示
要检查的一些事项:
您使用的是WebFarm配置吗?在WebFarm配置中使用会话时可能会出现问题。
您是否使用Fiddler或FireBug等工具检查网络流量?在AJAX调用期间是否发送了ASP.NET Auth cookie?
您能否确认会话var有效?
不隶属于 StackOverflow