如何调用可执行文件从 MVC Web 应用启动服务
本文关键字:Web MVC 应用 启动 服务 可执行文件 何调用 调用 | 更新日期: 2023-09-27 18:34:20
我有一个MVC4应用程序,我需要在其中初始化一个长时间运行的进程。 目前,此过程的代码位于作为服务安装的控制台应用中。 我让进程每隔几秒钟检查一次数据库,看看它是否需要运行,但这不是解决方案。 我需要一种方法让 MVC4 应用程序启动该过程并忘记它,但是当响应返回到客户端时,该过程不会与 Web 应用程序一起卸载。
有人可以指出我正确的方向吗?
如果我理解你的问题,你可以做的是在服务(从 ServiceBase 派生的类)中覆盖 OnCustomCommand:
private const int MY_CUSTOM_COMMAND = 140;
protected override void OnCustomCommand(int command)
{
if (command == MY_CUSTOM_COMMAND)
{
... Do stuff here ...
}
}
然后,可以在服务中从某些外部应用程序触发命令,如下所示:
private const int MY_CUSTOM_COMMAND = 140;
using (ServiceController sc = new ServiceController("MyTaskService", "ServiceMachine"))
{
sc.ExecuteCommand(MY_CUSTOM_COMMAND);
}
这是基本思想。自定义命令可以是介于 128-256 之间的任何值(含 128-256)。
我们在 Web 应用程序中使用类似的系统,它允许用户提交"作业",然后由 Windows 服务运行。Web 应用向 Windows 服务发送命令,告知它已提交新作业。然后,服务转到数据库以获取有关要执行的作业的信息。