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
所述
升级到 .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
所述