ASP.Net会话超时问题

时间:2013-08-05 06:57:30

标签: jquery asp.net

我有一个单页网站,大量使用AJAX。用户动作都以例如形式发送到URL。 requests.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

两者看起来都差不多。

2 个答案:

答案 0 :(得分: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%>

P.S。发布您的设置间隔代码,以便我们可以看到它。

NB

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

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

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

答案 1 :(得分:0)

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

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

由于您没有使用Cookie,因此您可能需要明确指定cookieless=true