【问题标题】:How to keep ASP.NET running如何保持 ASP.NET 运行
【发布时间】:2016-10-13 21:58:27
【问题描述】:

这是我的情况,我想使用 ASP.Net 创建一个 Web 应用程序, 我有一个简单的 UI,它有两个文本框和一个名为“RUN”的按钮 这两个文本框是名字和姓氏 用户可以输入值并单击运行

我有一个函数可以访问 Mongo 数据库并获取名字和姓氏与用户要求匹配的所有文档 然后我将结果写入输出文件“Excel sheet” 然后那个“mongo”函数返回到“Button_Click”函数 它进入磁盘并上传该excel表并为用户提供一个保存“窗口”,以便用户可以下载文件。 我只在我的本地机器上测试过这个并且似乎工作正常,现在我不确定当我移动到另一台机器时它会如何工作。 但这不是我的问题,

问题是,我想添加第三个文本框,用户可以在其中输入他/她想要转储 excel 文件的位置。它可以位于第三台服务器上,该服务器可从客户端和“托管 Web 应用程序的服务器”访问。 原因是某些查询可能需要长达 15 或 20 分钟,而用户不希望他/她的 Web 浏览器一直在运行。因此,在指定所需的信息“firstName,LastName”以及将要保存 excel 文件的位置之后,他可以单击运行并关闭 Web 浏览器。该程序将在我假设的后台运行并将 excel 文件转储到指定位置并向用户发送电子邮件通知文件已准备好并已复制到所需位置以便他/她可以稍后检查。 这是可行的吗?当用户关闭他/她的浏览器时,程序将如何运行?我需要两个不同的项目吗?

【问题讨论】:

  • 用户单击运行按钮后,您的服务器将继续该过程直到完成,服务器不知道也不关心用户是在等待还是关闭了浏览器。跨度>
  • 至少你可以花一些时间来写一个好看的可读性问题。一个好问题也可以帮助你自己找到答案。

标签: c# asp.net .net web


【解决方案1】:

关键是您需要对服务器上的某些功能进行异步调用来为您完成工作,而无需让用户在浏览器上等待。为此,您可以编写一个 具有异步服务操作的 WCF 服务。WCF 服务将托管在服务器上的 windows 服务或 IIS 下,实现将包括您想要的功能(例如查询数据库,创建excel文件,在服务器上写入文件并发送电子邮件),所有这些都应该在WCF服务实现中进行,并且从ASP.NET中您只需单击按钮,您将获取用户输入并异步调用您的异步函数,即在您的 WCF 服务中定义(通过您将提供的合同)

阅读此内容 How to: Implement an Asynchronous Service Operation

【讨论】:

    【解决方案2】:

    对于 ASP.Net 中这种长时间运行的进程,我们通常使用后台任务,例如hangfire

    您可能想阅读How to run Background Tasks in ASP.NET

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多