我有一个c#console应用程序,用于一些长时间运行的任务。在我的本地系统中,我通过System.Diagnostics.Process类从ASP.Net MVC 5控制器执行它。现在我们将它实现为azure,因为我们的站点在开发模式下以azure部署。
我是azure的新手所以不要怎么做。但是,我发现我发现可以上传我的控制台应用程序作为Web作业。我可以将web作业作为触发器运行,即按需。
但现在我的问题是如何从MVC控制器执行此Web作业,因为我需要从控制器传递一些参数?
答案 0 :(得分:3)
目前WebSite和WebJob之间没有直接链接,即使它们是在同一个应用程序池中执行的。最好的方法是将消息发布到您的MVC应用程序的队列中。另一方面,让WebJob检查新消息的队列。就像安德烈斯已经说过的那样。
这不是即时的,但易于实施且便宜。
如果您需要通过控制台应用程序立即做出反应,那么您需要将后台任务作为工作者角色实施并部署为单独的虚拟机,并且正在进行某种网络通信,因此您始终可以访问通过TCP为你的工作者角色。
答案 1 :(得分:2)
您可以设置网站以将项目推送到Azure队列,然后在每次将项目推送到队列时触发您的Web作业。
有一些信息,包括有关如何在http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/getting-started-with-windows-azure-webjobs上执行此操作的代码示例。