asp.net下如何异步运行持久化进程?.net4.5,asp.netmvc:从ASP.NET应用程序运行持久进程(1-2分钟)的最佳方式是什么,它应该在单线程环境中运行,我的意思是该进程只运行一次一个用户,所有其他用户的执行必须等到当前执行完成?场景如下:用户点击一个按钮来运行某种持续计算,http响应立即返回给用户,然后用户必须手动请求计算的状态以进行单独的请求。中止Asp.nethttp会话不应导致进程终止,它应该继续。该进程可以在同一台或单独的服务器上运行。我建议使用像NServiceBus这样的产品来卸载处理并以单线程模式运行它。这样做的好处是所有请求都将按顺序处理,并且可以从Web服务器卸载处理,因为您不希望Web服务器上发生长时间运行的进程。我将向您展示如何使用http://hangfire.io执行此操作-这是在ASP.NET应用程序中执行即发即弃、延迟和重复任务的极其简单的方法。无需Windows服务。首先,通过NuGet安装包。如有任何疑问,请参考官方文档中的快速入门指南。PM>Install-PackageHangfire打开您的OWINStartup类并添加以下行:publicvoidConfigure(IAppBuilderapp){GlobalConfiguration.Configuration.UseSqlServerStorage("connection_string");app.UseHangfireDashboard();app.UseHangfireServer();}thenWritemethodsthatwillexecutelongrunning(我应用属性一次只执行一个方法):用户:publicActionResultPerform(){BackgroundJob.Enqueue(()=>LongRunning());返回视图();如果要通知用户作业完成,请考虑使用SignalR并相应地附加LongRunning方法。.Net4.5.2添加了可用于计划任务的QueueBackgroundWorkItem。如果您不控制服务器(当它重新启动时),appPool关闭的默认延迟90秒将不起作用(除非您可以检测到任务未完成并在另一台服务器上运行它)。详细请看《在ASP.NET中可靠调度和运行后台进程的QueueBackgroundWorkItem》以上是C#学习教程:如何在asp.net下异步运行持久化进程?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
