gpt4 book ai didi

c# - ASP.NET Web 窗体中的长进程 - 浏览器超时

转载 作者:行者123 更新时间:2023-11-30 17:36:02 25 4
gpt4 key购买 nike

我意识到这个问题已经以不同的形式被问到,但是 .net 具有更新的功能(例如 async await),我想知道哪种解决方案是最好的。

我有一个 C# .Net Web Forms 应用程序,它有一个长时间运行的任务:该任务处理用户请求,他们在其中上传 csv 数据文件,序列化为对象,然后导入到数据库。该任务可能需要几分钟时间,并且浏览器会定期超时 - 这会导致可用性问题。

我见过很多解决方案,用户将上传数据,然后任务在后台执行。该页面随后会间歇性地调用服务器以请求任务的状态,从而让用户了解进度。

我想知道这是如何实现的?我在表格上看到的选项:

  • window 服务
  • Web 服务 - 这是如何托管的:IIS 还是 Windows 服务?
  • 异步,等待 - 这有可能吗?

最佳答案

我认为您可以采用两种不同的方法。

第一种方法是拉取方法,您将在服务器中(可能在 session 中)保留每个用户的进程状态,并让进程更新该状态,然后客户端可以通过 ajax 定期拉取实际状态。 ajax 调用是从客户端的浏览器进行的,该功能可以放在客户端正在查看的同一网页中,如果只从那里使用,则无需将其分开。

第二种可能是推送方法,它有点复杂,但为您提供了其他可能性。您需要使用像 signalr 这样的库 https://www.asp.net/signalr ,它允许您从服务器到客户端的浏览器进行通信,调用 JS 函数,并将更新的状态推送到客户端的表单。这可以创建更实用的双向通信和更好的用户体验,以换取更多的复杂性。

关于c# - ASP.NET Web 窗体中的长进程 - 浏览器超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40342176/

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