我在几天前将这个MVC 4应用升级到MVC 5 instructions,现在我收到了以下错误。我使用Nuget(v4.3.3.13295)将DotNetOpenAuth更新为最新位,但它仍然会抛出此错误。
我该如何解决这个问题?
类型违反的继承安全规则: 'DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult'。派生 类型必须匹配基类型的安全可访问性或 不太容易接近。
答案 0 :(得分:5)
终于解决了这个问题。原来我需要对 DotNetOpenAuth 的源代码进行一些更改并重新编译它。这根本不容易,因为从github下载后源代码将无法编译。我不得不花费大约3天的时间尝试各种各样的东西,并学习构建系统与 DotNetOpenAuth 的项目文件相结合,直到我最终编译完成。似乎这个项目的作者已经放弃了它。详细了解此问题here。
从 / src / 目录下的所有 AssemblyInfo.cs 文件中删除以下字符串的所有实例。
[assembly:AllowPartiallyTrustedCallers]
我不得不在两个项目中弄乱 Microsoft.Contracts 引用,并将其指向 /tools/Contracts/PublicAssemblies/v3.5/Microsoft.Contracts.dll ,然后使用 alias 来获取此程序集中的类以正确解析。一些 Requires.NotNull()行拒绝编译,所以我只是将它们评论出来...... c'est la vie ..
运行以下命令以跳过这些程序集的验证:sn.exe -Vr *,2780ccd10d57b246
构建程序集后,我引用了这些程序,从Nuget重新添加了 Microsoft.AspNet.WebPages.OAuth 3.0,重建了我的解决方案,最后我的应用程序启动并在MVC 5上运行。< / p>