Hangfire 在 mscorlib.dll 中寻找 ISet

Hangfire looking for ISet in mscorlib.dll

升级到 .NET6 后,我遇到了 Hangfire 运行时异常

System.TypeLoadException: Could not load type 'System.Collections.Generic.ISet`1' from assembly 'mscorlib, Version=4.0.0.0
at Hangfire.Common.TypeHelper.TypeResolver(Assembly assembly, String typeName, Boolean ignoreCase)    
at Hangfire.Common.TypeHelper.DefaultTypeResolver(String typeName)    
at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()    
at Hangfire.Storage.InvocationData.DeserializeJob()

据我所知,ISet 不在 mscorlib.dll 中。根据文档,它应该在 System.Runtime.dll 中。

知道为什么 Hangfire 会这样做吗?我正在使用 Hangfire.AspNetCore 1.7.27.

如评论中所述,您应该在 Hangfire 数据库中查找具有 ISet 的序列化参数。 正是这个参数的反序列化导致了这个问题,如 :

所示
at Hangfire.Storage.InvocationData.DeserializeJob()

至于问题的根本原因,我首先认为该作业已使用旧版本的框架入队,而出队尝试是使用较新版本的框架。但这也可能是序列化设置问题,如 this older answer

所述