gpt4 book ai didi

c# - 启动后台任务 ASP.NET MVC 4.5

转载 作者:太空狗 更新时间:2023-10-29 23:07:54 27 4
gpt4 key购买 nike

我在 ASP.NET MVC 中实现了一个简单的 pdf uploader ,我需要处理上传的文档。因为处理可能需要一段时间,所以我希望在后台完成。工作流程是这样的:我希望用户上传文档,当文档保存在数据库中时,他应该能够在网站上做其他事情,包括上传新文档。用户不应该对后台处理一无所知。

我的实现看起来像这样:

[HttpPost]
public async virtual Task<ActionResult> Confirm(string author, string title)
{
//...
previousDocumentIsProcessing = true;
await InvokeDocumentProcessor(_document.Path, _document.DocumentID);
previousDocumentIsProcessing = false;

return View("Success");
}

问题是处理完成后显示“成功” View 。由于操作是异步的,因此用户可以点击并执行其他操作,但我想创建一个后台进程,启动它并立即显示“成功” View 。用户不应被处理打扰。

我怎样才能做到这一点?我曾尝试使用后台 worker ,但它没有用(我收到错误消息,说此时无法启动异步进程)。

最佳答案

User should not know anything about the processing in the background.

你确定吗?如果在处理过程中出现错误怎么办?用户如何知道处理何时完成?

How can I achieve this?

正如我在我的博客上解释的那样,async does not change the HTTP protocol .

正确的解决方案是将上传的文件保存在某个地方(例如 Azure blob 存储),将消息插入可靠的消息队列(例如 Azure 队列存储),并有一个完全独立的后端来进行处理(例如,Azure worker 角色)。

如果您想要一个不正确的(内存中的)解决方案,我有 another blog post describing that approach .

关于c# - 启动后台任务 ASP.NET MVC 4.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21062464/

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