gpt4 book ai didi

.net - Quartz.NET 调度程序 - 在远程服务器上提交作业时出现错误 "Could not load file or assembly ' SimpleJob ...“

转载 作者:行者123 更新时间:2023-12-04 18:03:20 25 4
gpt4 key购买 nike

我在控制台应用程序中运行 Quartz(虽然我已经在 ASP.NET 应用程序中重现了行为)与远程 Quartz 服务器(通常的配置 - 客户端将线程设置为 0,远程服务器监听端口 555 等) .).我遇到的问题和这里一样Could not load job assembly error in Quartz.NET在这里 Quartz.Net Initializing Project .具体来说,在客户端调用 IScheduler.ScheduleJob() 时,我收到错误:

Could not load file or assembly 'SimpleJob.dll, Version...The located assembly's manifest definition does not match the assembly reference'

正如您在上面的两个 Stackoverflow 链接中看到的那样,问题是 Quartz 服务器不知道 IJob 类,而解决方案(引用自第二个链接):“...复制/将 [客户端/控制台应用程序的程序集/可执行文件] 粘贴到 Quart.NET 服务文件夹中......一旦你这样做,它将加载 [无论特定的 IJob 类是什么]......推荐的解决方案是......创建一个单独的 DLL对于每个 [job classes]...and...”(现在是我的措辞)从服务器项目中引用这些程序集。

我这样做了,但没有任何快乐。具体来说,我收到的第一个错误是找不到我的作业文件的程序集。那时我将客户端的程序集 (.exe) 复制到服务器的 bin 文件夹中,并添加了对该程序集的引用——不幸的是。然后我将我的工作类分解成一个单独的程序集并将该 .dll 复制到服务器的 bin 目录并添加对该程序集的引用 - 运气不好。最后,我复制了我工作的实际类文件 (.cs) 并将其包含在服务器服务器项目中,然后添加了一个引用 - 运气不好。

让我澄清一下“没有运气”是什么意思。将作业类的程序集添加到服务器项目后,我仍然收到“无法加载文件或程序集...”错误,但现在是:

Could not load file or assembly 'Quartz.dll, Version...The located assembly's manifest definition does not match the assembly reference'

此时错误是关于 Quartz.dll 的提示,这对我来说毫无意义,因为该 dll 在客户端和服务器的项目中(根据定义)都被引用,并且在它们各自的 bin 文件夹中。

我的下一步是运行 Process Monitor并捕获特定程序集加载失败的地方。没有快乐 - 搜索 SimpleJob.dll 和 Quartz.dll,并在这两种情况下都取得了成功。 (回想起来,我不认为文件监控在这里是相关的,因为从文件系统的角度来看,特定的 dll 被读取,但程序集不是由 .net 加载的。Process Monitor 不会看到它。)

最后我enabled assembly binding failure logging ,查看了生成的日志,但无法识别故障。

欢迎提出建议...

最佳答案

对于客户端和服务器,您是否将带有作业定义的程序集与 quart.dll 放在同一文件夹中?它们还必须是两边完全相同的版本。

关于.net - Quartz.NET 调度程序 - 在远程服务器上提交作业时出现错误 "Could not load file or assembly ' SimpleJob ...“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31546290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com