c# – 你如何克服这个问题? Jquery ajax服务器超时

c# – 你如何克服这个问题? Jquery ajax服务器超时,第1张

概述我正在使用asp.net mvc,C#和 jquery.我的网站大量使用ajax.这导致了一个问题,我不知道如何解决它(比我目前的解决方案更好地解决它). 场景. >用户登录我的网站 – cookie设置,服务器超时30分钟 >用户离开30分钟 >用户回来并点击我的一个启用了ajax的jquery选项卡 >请求发送到服务器 >服务器发送nope用户超时将其发送回登录页面. >因为它是一个ajax请 我正在使用asp.net mvc,C#和 jquery.我的网站大量使用AJAX.这导致了一个问题,我不知道如何解决它(比我目前的解决方案更好地解决它).

场景.

>用户登录我的网站 – cookie设置,服务器超时30分钟
>用户离开30分钟
>用户回来并点击我的一个启用了AJAX的jquery选项卡
>请求发送到服务器
>服务器发送nope用户超时将其发送回登录页面.
>因为它是一个AJAX请求,重定向会在选项卡中呈现.它看起来很丑陋(在标签中呈现整个页面),用户可能在这一点上非常困惑.

问题

>就服务器和AJAX而言,AJAX请求有效并且成功响应被发回.所以我无法检查错误,因为请求成功,而不是正确的数据回来.

解决方案1

>用户登录网站.
> Jquery AJAX请求查找用户超时
>超时比服务器超时少60秒
>一旦JavaScript端超时被击中.出现Jquery对话框并告诉他们他们的会话已过期并强制他们重定向到登录包.

>用户无法单击任何内容,因为对话框会阻止该 *** 作.如果某些用户使用fireBUG或者他们可以移除它,但服务器超时仍然会生效,他们将获得丑陋的版本(不要在意).

>如果用户发出AJAX请求,则重置服务器端的超时以及客户端的超时.

问题

>用户可以走开,另一个人可能会来,超时消息可能会启动,但他们仍有可能有45秒的时间尝试发出新请求并重置超时.这非常低,并不太担心.
>有时我观察到它只是超时(客户端)而我不知道为什么.我永远无法重现问题(似乎发生在其他人身上,但在我测试时却没有).所以我猜测有些东西没有写入或其他出错的地方.

所以2号真的是我想找到另一个解决方案的重要原因.

解决方案2(推测).

我想也许如果我可以制作我自己的响应标题或者其他什么,如果服务器超时那么我可以发送一些303重定向或我可以检查的那种性质的东西然后根据它进行jquery重定向.

但是我不知道在我的C#代码中该怎么做,或者我可以做那样的事情.

解决方法 您可以随时在logon *** 作中添加自定义http标头,该标头可以被AJAX调用拦截并相应地执行 *** 作:

public ActionResult logon(){    response.addheader("X-logoN","logon");    return VIEw();}

并且在成功回调检查是否存在此标头:

$.AJAX({    url: '/home/someaction',success: function (data,textStatus,XMLhttpRequest) {        if (XMLhttpRequest.getResponseheader('X-logoN') === 'logon') {            // the logon page is being displayed             // probably timeout or unaithorized => act accordingly        }    }});
总结

以上是内存溢出为你收集整理的c# – 你如何克服这个问题? Jquery ajax服务器超时全部内容,希望文章能够帮你解决c# – 你如何克服这个问题? Jquery ajax服务器超时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存