【问题标题】:Run job on ASP.NET website service start in IIS在 IIS 中启动 ASP.NET 网站服务上运行作业
【发布时间】:2011-12-12 12:15:59
【问题描述】:

我有一些在 Application_Start 上调用的方法。它从任何用户的第一页请求开始。

但我有另一个应用程序,依赖于在 Application_Start 期间触发的任务。

因此,如果 IIS/网站重新启动 - 另一个应用程序无法从网站获取一些数据,直到有人在正在运行的网站上请求页面。

有没有办法在网站启动时运行一些任务;无需用户端的任何交互,只需在 IIS 中启动网站并完成我想要的工作?

PS更多关于实现架构的细节:
网站启动消息服务实例并开始通过该服务(位于另一台服务器上)发送消息。我知道为这类事情创建 wcf 或 windows 服务会更好,但是在我加入这个项目之前有人写了这个网站。所以客户端(从消息服务器接收消息)对网站一无所知。这里的网站只是用于打开/关闭某些消息传递功能的管理面板。

我的解决方案
为我的任务创建了 Windows 服务。运行良好,在本地系统帐户下写入 Windows 事件日志没有问题。

【问题讨论】:

    标签: asp.net jobs startup


    【解决方案1】:

    看看这个“The Dangers of Implementing Recurring Background Tasks In ASP.NET

    您还应该考虑将Quartz.NET 安装为服务,以便您可以远程设置计划任务。

    【讨论】:

    • 好文章,谢谢。而且我知道我的案例是不好的做法,不过,正如我已经提到的,代码是在我之前编写的,所以我必须让它在没有用户请求网站的情况下运行。
    • 你可能想实现他用来运行后台任务的代码,也只是做一个不断向你的站点发出请求的服务,所以应用程序池不会停止,也不会有用户启动该过程所必需的。您也不能将 Quartz.net 设置为服务吗?
    • 我考虑用 WCF 服务替换那个网站。虽然我知道 web 服务也将基于请求..是否有一个事件将在 web 服务第一次启动时被调用?
    • ..stackoverflow.com/questions/739268/wcf-application-start-event ,希望静态构造函数也能帮助我=)
    • 不,我建议您将Quartz.NET 安装为服务。通过这种方式,您将能够设置计划任务(就像 Windows 中的计划任务一样),但可以远程设置,例如使用 XML。查看他们的网站了解更多信息。看看他们的tutorial 很简单。
    【解决方案2】:

    你可以试试这个。

    • 将代码中的条目放入事件日志中
    • 使用 windows 任务计划程序创建任务
    • 将触发器创建为“在事件中开始任务”
    • 使用您想要的作业创建操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 2015-08-30
      • 2011-01-06
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      相关资源
      最近更新 更多