[玻璃鱼V]发布后的缓存问题
先看代码:
//母版页
<body onload="StartHeartBeat();">
//HeartBeat.js
var HeartBeatTimer;
function StartHeartBeat()
{
if (HeartBeatTimer == null)
HeartBeatTimer = setInterval("HeartBeat()", 1000 * 3);
}
function HeartBeat()
{
WebService.RunHeartBeat(runBeat,errorBeat);
}
function runBeat(result)
{
if(result==false)
{
location.href="/Manager/Login.aspx";
}
}
function errorBeat(error)
{
alert(error.get_message());
}
//WebService.cs
[WebMethod(EnableSession = true)]
public bool RunHeartBeat()
{
HeartBeat hb = new HeartBeat();
return hb.RunHeartBeat();
}
//HeartBeat.cs
public bool RunHeartBeat()
{
string CurrentUser = FutaRiWeb.Common.CacheHelper.GetCacheString("currentUser");
string userName = FutaRiWeb.Common.CacheHelper.GetSessionString("currentAdmin");
if (CurrentUser == "" || userName == "" || !CurrentUser.Equals(userName))
{
return false;
}
else
{
FutaRiWeb.Common.CacheHelper.SetCache("currentUser", CurrentUser);
FutaRiWeb.Common.CacheHelper.SetSession("currentAdmin",userName);
return true;
}
}
//CacheHelper.cs
public static bool SetCache(string CacheCode,string CacheObject)
{
try
{
System.Web.HttpContext.Current.Cache.Insert(CacheCode, CacheObject, null, DateTime.MaxValue, TimeSpan.FromMinutes(3), System.Web.Caching.CacheItemPriority.NotRemovable, null);
return true;
}
catch
{
return false;
}
}
-----------------------------------我是分割线-----------------------------------------
这是我写的一个单点登录,在本地测试的时候,一切正常,但是传到空间上后,发现登录过后一会就跳回到登录页。
我将HeartBeat.js中的runBeat(result)修改为,if(result==true){alert("true!")}else{alert("false!")}则在服务器上,提示数个true后就一直提示false(JS设置每3秒弹一个确认框)。
如此确认了不是JS心跳的问题(能正常执行心跳并取得WebService的返回值),问题应该出在Cache提前过期和无法重新设置Cache上。
大家给看看,问题出在哪里?