gpt4 book ai didi

asp.net - 如何在长时间请求处理期间保持 ASP.NET session ?

转载 作者:行者123 更新时间:2023-12-02 05:30:18 24 4
gpt4 key购买 nike

场景如下:

  1. 用户点击下载需要很长时间才能完成的复杂报告(比 session 超时时间长)。
  2. 报告完成后,用户点击任何其他链接,但 session 已过期。

用户想知道为什么在长时间运行的请求期间 session 已过期。

如何告诉 ASP.NET 在请求期间不要使 session 过期? (请求完成后开始计算session超时。)

更新:该解决方案无需 JavaScript 即可运行。

最佳答案

Web 应用程序应该及时响应请求。我认为实际的问题不是 session 超时,而是一个长时间运行的进程在应该卸载到后端时在线发生。

不是让用户等待报告,而是在服务器上启动一个进程来生成报告,并用一个响应来响应用户,表明他们的请求已经排队并正在处理,他们的报告将被过程完成后准备就绪。

然后用户可以继续浏览网站、使用应用程序等。报告完成后,您可以通过多种方式通知用户。该应用程序可以向他们发送电子邮件,甚至可能附有报告。或者可以有一些应用程序内通知系统(如 Facebook 通知程序),它要么具有 AJAX 轮询机制,要么(响应您关于不使用 JavaScript 的更新)可能更加被动,并在他们的第一个页面请求之后简单地通知他们完成报告。

无论如何,任何需要这么长时间的进程都不应该内嵌在网络应用程序中。

编辑:作为建议的设置,您可以执行以下操作:

  1. 当用户请求报告时,将记录添加到队列表中,其中包含开始生成报告所需的任何信息。
  2. 将应用程序控制权交还给用户。
  3. 编写一个 Windows 服务或预定的控制台应用程序来轮询队列表并处理该表中的任何报告。
  4. 每个报告完成后,更新其在表中的状态。
  5. 还可以选择让服务/应用程序通知用户(电子邮件、向表格添加记录以驱动网站上的应用程序内通知系统等)。
  6. 用户可以按照通知下载报告,也可以在网站上查看他们的“报告队列”。

关于asp.net - 如何在长时间请求处理期间保持 ASP.NET session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com