【问题标题】:Error handling, Session expire strategy in ajax asp.net appajax asp.net 应用程序中的错误处理、会话过期策略
【发布时间】:2010-12-10 11:56:37
【问题描述】:

是否有人对大型 ajaxy 应用程序中的错误和会话过期的整体处理有任何策略或想法?在传统的 Web 应用程序中,当一切都是 post 或 get 时,很容易处理错误和会话到期并向用户呈现友好的消息。与现代 ajaxy Web 应用程序无关。我的 Web 应用程序使用 ASP.Net Ajax 更新面板和来自各个页面的 WCF 调用。这些 ajax 调用中的任何一个都可能返回错误,或者用户的会话可能已过期。我正在寻找的是单个客户端组件或可以识别何时出现错误并向用户显示友好消息或识别会话超时并将用户引导到登录页面的东西。人们为解决此类问题做了什么?

【问题讨论】:

  • 为了澄清,我正在寻找一种通用方法来通知用户事件(错误或会话过期)并向他们展示一些消息。我希望能够在一个地方执行此操作,而不是在每个 onError 回调中编写类似的代码。

标签: asp.net-ajax error-handling session-timeout


【解决方案1】:

完全切换会话!这个建议有两个方面。

  1. AJAX 不是那么快的技术,因此根据 Microsoft 的建议,关闭会话可以缩短服务器端呈现时间
  2. 处理同时打开的 2 个页面的会话在这两个页面上都会破解 ajax。

您已经提到了服务器端故障,会话否定列表可以继续。

请检查您的代码,真正需要在会话中存储的内容。 我很确定您可以将任何数据分离到 2 个(幻数)存储中:

  1. 在客户端和服务器之间永久遍历的数据(例如会话密钥的模拟)。让您拥有密钥并保存在隐藏字段或 cookie 中。 ViewState 也很好,但为了优化使用,我更喜欢控制确切保存的内容。
  2. 在多个页面之间收集的数据,很好的例子是向导。从数据库中的用户或用户的个人资料中累积数据(保留在数据库中)。对于我的项目,我们开发了特殊的 TempStorage 表,其中用户保存了向导数据,如果由于某种原因用户没有完成超过 3 天的所有步骤,表将被作业清理。

【讨论】:

  • 我不是在谈论存储临时数据的会话状态,我是在谈论用户的登录会话。该会话可能会在大量不活动后过期。在这种情况下,我需要用户重新登录。
  • @Matthew - 登录用户是具有 AUTH cookie 的用户。所以这不是 HttpSession 的问题,只要确保用户有足够大的 .ASPXFORMAUTH cookie 过期时间。
  • 即便如此,会话仍有可能过期,我需要能够让用户知道并显示登录页面。
  • 我已经提到过 - 没有安全会话,只有 cookie 已过期。将其设置为 2099。在这种情况下,仍然存在用户可以在浏览器中按“清除所有 cookie”的可能性,如果您查看此可能性,请查看无烹饪身份验证。它可以通过 URL 或在隐藏字段的帮助下完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 2011-05-19
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2011-06-20
相关资源
最近更新 更多