1

我有一个单页网站,大量使用AJAX. 用户操作都以例如的形式发送到 URLrequests.aspx?obid=1&verb=shownotes

我的托管服务提供商的会话到期时间设置为 5 分钟,这太短了。我正在努力让他们改变这一点。

我曾尝试使用setInterval每 30 秒向服务器发送一次请求,但会话仍会在 5 分钟后过期。请求中的信息setInterval看起来就像一个用户请求,但我猜服务器没有被愚弄。

我已经禁用了缓存jQuery

我不使用cookies。

可能是setInterval请求被缓存在服务器本身上吗?我应该在这个请求中附加一个随机字符串吗?

确保会话保持活动状态的最佳方法是什么?

编辑:以下是从 Chrome 开发人员工具复制的请求标头:

典型用户操作的请求标头:

POST /requests.aspx?obid=0&otid=203&verb=display&param1=0&param2=0&param3=0 HTTP/1.1
Host: applify.co.za
Connection: keep-alive
Content-Length: 0
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://applify.co.za
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
DNT: 1
Referer: http://applify.co.za/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: ASP.NET_SessionId=4li3ilr0bsb5yc1uf5oy1pd1

操作的请求标头setInterval

POST /requests.aspx?obid=0&otid=545&verb=donothing&param1=&param2=&param3= HTTP/1.1
Host: applify.co.za
Connection: keep-alive
Content-Length: 0
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://applify.co.za
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
DNT: 1
Referer: http://applify.co.za/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: ASP.NET_SessionId=4li3ilr0bsb5yc1uf5oy1pd1

两者看起来几乎一样。

4

2 回答 2

0

您可以尝试添加时间戳后缀,例如:

(通过 JS)

var t='requests.aspx?obid=1&verb=shownotes';
t+='&'+(1*new Date())

继续请求....

或通过 C#

...requests.aspx?obid=1&verb=shownotes&t=<%=DateTime.Now.Ticks%>

ps发布您设置的间隔代码,以便我们看到它。

注意

  • jquery ajax 具有默认的cache属性true(恕我直言)

    尝试将其设置为false. 它会添加一个时间戳。

  • 你可以发布aspx代码的代码吗?(我想看看你是在那里做 ClearHeaders 还是 Response.End ....

于 2013-08-05T07:01:29.240 回答
0

您可以在 web.config 中覆盖会话超时:

<system.web>
    <sessionState timeout="60"  />
</system.web>

由于您没有使用 cookie,因此您可能需要特别指定cookieless=true.

于 2013-08-05T07:18:50.313 回答