【发布时间】:2021-11-25 16:28:37
【问题描述】:
升级到 .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作为参数的旧重复或计划作业,或者具有属性(或子 * 属性)为ISet的参数 -
哦,哇,我一直专注于认为这是某种包/dll 问题,我没有考虑查看数据库。我使用的是内存数据库,但切换到基于文件的数据库我确实可以看到我们正在使用 ISet 参数插入作业。非常感谢您的提示,我会看看我现在是否能弄清楚如何处理这个问题并会回复
-
出于兴趣,为什么 ISet 现在成了问题?
-
顺便说一句,这似乎确实有效!我将我们存储的参数从一个集合更改为一个简单的字符串数组,我正在克服错误,谢谢。如果您作为答案发布,我会将其标记为已接受,干杯。如果您能提及 ISet 不再有效的原因,则可以加分 :)