我正在使用asp.net mvc,C#和jquery。我的网站大量使用ajax。这导致了一个问题,我不知道如何解决它(比我目前的解决方案更好地解决它)。
场景。
用户登录我的网站 - cookie设置,服务器超时30分钟
用户离开30分钟
用户回来并点击我的一个启用了ajax的jquery选项卡
请求发送到服务器
服务器没有用户超时将它们发送回登录页面。
因为它是一个ajax请求,重定向会在选项卡中呈现。它看起来很丑陋(在标签中呈现整个页面),用户可能在这一点上非常困惑。
问题
就服务器和ajax而言,ajax请求是有效的,并且成功响应被发回。所以我无法检查错误,因为请求成功,而不是正确的数据回来。
解决方案1
用户登录网站。
Jquery ajax请求发现用户超时
超时比服务器超时少60秒
一旦javascript端超时被击中。出现Jquery对话框并告诉他们他们的会话已过期并强制他们重定向到登录包。
用户无法单击任何内容,因为对话框会阻止该操作。如果某些用户使用firebug或者他们可以移除它,但服务器超时仍然会生效,他们将获得丑陋的版本(不要在意)。
如果用户发出ajax请求,则重置服务器端的超时以及客户端的超时。
问题
用户可以走开,另一个人可能会来,超时消息可能会启动,但他们仍有可能有45秒的时间尝试发出新请求并重置超时。这非常低,并不太担心。
有时我观察到它只是超时(客户端)而我不知道为什么。我永远无法重现问题(似乎发生在其他人身上,但在我测试时却没有)。所以我猜测有些东西没有写入或其他出错的地方。
所以2号真的是我想找到另一个解决方案的重要原因。
解决方案2(推测)。
我想也许如果我可以制作我自己的响应标题或者其他什么,如果服务器超时,那么我可以发送一些303重定向或我可以检查的那种性质的东西然后根据它进行jquery重定向。
但是我不知道在我的C#代码中该怎么做,或者我可以做那样的事情。