如何让Quartz.Server.exe运行我的ASP.NET作业

时间:2012-05-13 14:01:41

标签: c# asp.net quartz.net

我有一个生成文档的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服务而不是此控制台应用程序的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

  1. 您无需在GAC中安装。只需确保程序集与quartz.dll位于同一文件夹中,或者框架可以使用常用的定位程序集技术找到它。
  2. 是的,让UI充当客户端是很常见的,因此它必须指向同一个商店。除非UI也将充当服务器,否则不常见的是将调度程序设置为集群。
  3. 是。 Quartz.Server.exe安装将其作为服务安装。
  4. @James评论中的链接就是答案。
  5. FWIW,由于IIS管理Web应用程序生命周期的方式,将Quartz.net作为服务安装通常是比将其嵌入ASP.Net Web应用程序更好的解决方案。

答案 1 :(得分:1)

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