【问题标题】:How to get Quartz.Server.exe to run my ASP.NET jobs如何让 Quartz.Server.exe 运行我的 ASP.NET 作业
【发布时间】:2012-05-15 03:07:03
【问题描述】:

我有一个生成文档的 ASP.NET 网站。每个文档都需要一段时间来生成,并且有很多文档请求,所以我正在探索使用 Quartz.NET 来帮助汇集请求,在重启时保持它们,并将它们交付给用户以获得更好的体验。

Quartz.Server.exe 包含在下载中,它似乎是一个用于运行 Quartz 作业的守护进程,即使前端没有运行也是如此。这对于像我这样的网络场景来说显然是完美的。

主要问题是 Quartz.Server.exe 无法实例化我提供的作业类型。

Could not load file or assembly 'quartztest01' or one of its dependencies. The system cannot find the file specified. --

这是有道理的,因为我的程序集 quartztest01 不在 GAC 中,而 Quartz.Server.exe 对我的程序集一无所知。但是当我尝试解决这个问题时会提出很多问题。

  1. 我不希望我的程序集出现在 GAC 中。我怎样才能做到这一点?参考我的程序集重建Quartz.Server.exe?
  2. 我是否采取了正确的方法?前端和Quartz.Server.exe 使用相同的数据存储,并配置为集群,但我很担心它会运行。
  3. Quartz.Server.exe 甚至是用于生产用途的吗?它似乎创建了一个示例作业,对我来说这表明它只是一个示例。我应该修改这个 exe 以满足我自己的需要吗?
  4. 将 Quartz.NET 安装为合法的 Windows 服务而不是此控制台应用程序的最佳方法是什么?

【问题讨论】:

标签: c# asp.net quartz.net


【解决方案1】:
  1. 您不必在 GAC 中安装。只需确保您的程序集与quartz.dll 位于同一文件夹中,或者框架可以使用定位程序集的常用技术找到它。
  2. 是的,让 UI 充当客户端是很常见的,因此它必须指向同一个商店。不常见的是将调度程序设置为集群,除非 UI 也将充当服务器。
  3. 是的。 Quartz.Server.exe install 将其安装为服务。
  4. @James 评论中的链接就是这个问题的答案。

FWIW,由于 Web 应用程序生命周期由 IIS 管理的方式,将 Quartz.net 作为服务安装通常比将其嵌入到 ASP.Net Web 应用程序中更好。

【讨论】:

  • 谢谢 - 集群的原因是网络应用程序将调度作业。该服务将执行它们。对我来说,很明显因为我在同一个数据存储上使用了两个石英“实例”,所以我需要将它标记为集群。这是正确的吗?
  • 集群功能仅在您有多个服务器执行作业时使用。如果您的 asp.net Web 应用程序未运行作业,则无需将调度程序设置为集群。
【解决方案2】:

只需将您的程序集放在与服务器 exe 相同的目录中,它应该可以正常加载。您也可以使用 probePath,但可能不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 2015-11-15
    • 2014-02-02
    • 2017-04-24
    • 1970-01-01
    • 2021-02-05
    • 2018-03-22
    • 2013-05-28
    相关资源
    最近更新 更多