我目前正在为我公司管理一个ASP.NET应用程序。最近,当我尝试调试代码时,我得到了一个 System.TypeLoadException 。
确切的信息是:
类型违反的继承安全规则:' System.Net.Http.Formatting.JsonContractResolver'。派生类型必须与基类型的安全可访问性匹配,或者不易访问。
它一直指向以下区域作为错误的来源:
第21行:新{controller ="帮助",操作="索引",apiId = UrlParameter.Optional});
第22行:
第23行:HelpPageConfig.Register(GlobalConfiguration.Configuration);
第24行:} 第25行:}
以上内容可在Web API帮助内容的帮助页面配置中找到。
有没有人有这样的问题?
更新 这个特殊问题始于我从TFS删除bin文件夹的那一刻。
答案 0 :(得分:4)
经过24小时的不懈研究(并且令人担忧),我解决了这个问题。
看到我继续抛出 System.TypeLoadException ,我研究了这种类型,并找到了抛出异常的几个原因。
在我的情况下,这是因为它需要的特定版本的Newtonsoft.Json.dll不是被引用的内容,因为它固执地指向包含.NET 2.0和3.5版本的错误包文件夹。删除这些包后,我删除了引用并从正确的包文件夹中再次添加它,清理了解决方案并构建了它并且它已经恢复并且很好。
答案 1 :(得分:1)
这些不是导致异常的行,您会看到引用这些行,因为HelpPageConfig.Register(GlobalConfiguration.Configuration)
是导致异常的代码运行的地方。实际异常发生在Register
类的HelpPageConfig
方法的更深处。
最有可能的是,你有另一个继承自JsonContractResolver
的类,它被标记为内部。显然,如果没有看到你的所有代码,我无法准确地告诉你。但是,可以快速搜索文件,查找从该基类进入的类并从那里开始。
答案 2 :(得分:0)
我将Microsoft.AspNet.WebApi
从version="5.2.7"
升级到version="4.0.30506.0"
,并将newtonsoft更新到7.0.1。
这是由于依赖项中存在多种版本。感谢您的指点。