【问题标题】:Is there an existing solution to AJAX timeouts with ASP.NET MVC and jQuery?是否存在使用 ASP.NET MVC 和 jQuery 来解决 AJAX 超时的现有解决方案?
【发布时间】:2010-02-25 18:53:59
【问题描述】:

您正在使用带有 jQ​​uery 的 ASP.NET MVC。你做了很多 AJAX 调用。如果用户单击某些内容并且会话超时,您想通知用户。有没有人有一个很好的现有解决方案,还包括在启动 AJAX 请求后通知用户超时?

(对于非 AJAX ASP.NET 应用程序有已知的解决方案,其中涉及检测 Global.asax 中的超时并重定向到特定页面。但是,重定向 AJAX 请求是有问题的,因为用户要么看不到它,否则会在错误的上下文中看到它。)

这是几乎每个应用程序都需要的东西,所以我只是想确保我不会重新发明轮子。谢谢!

【问题讨论】:

    标签: jquery asp.net-mvc timeout


    【解决方案1】:

    这是我要做的:当我的服务器检测到会话超时时,它会使用重新身份验证页面进行响应,并且它还在响应中设置一个特殊的标头。对于 Ajax,我只是让我的处理程序查找该标头,如果它看到它,它会强制周围的页面(即location.href 或其他)重新加载(使用额外的“nonce”参数以确保它绕过浏览器缓存)。

    请注意,我的解决方案并不是专门针对 ASP.NET 的。

    【讨论】:

    • 没关系,不需要 ASP.NET……我对客户端处理更好奇。所以,如果是正常的请求/响应,他们会得到超时通知/登录页面,如果是 AJAX 请求/响应,您检查此标头并重定向到该页面?这听起来是一种不错的处理方式。
    • 到目前为止它对我来说工作正常 :-) 请注意,当外部页面重新加载时发生的情况是服务器检测到超时再次。因此,它重定向到重新验证页面,并将原始 URL 作为表单参数保存在那里,以便在验证后它可以让用户回到他们最初所在的页面。正如您可能想象的那样,设置和检测标头非常简单 - 它甚至不必具有任何特定值。
    • 谢谢尖头。我今晚得到了这个解决方案。这提供了更好的用户体验,我不需要在服务器端以任何不同的方式处理页面请求和 ajax 请求。
    猜你喜欢
    • 2011-06-15
    • 2013-08-25
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多