Asp.net mvc 4 派生类型必须与基类型的安全可访问性相匹配,或者不易访问

Asp.net mvc 4 派生类型必须与基类型的安全可访问性相匹配,或者不易访问,asp.net-mvc-4,upgrade,dotnetopenauth,asp.net-mvc-5,Asp.net Mvc 4,Upgrade,Dotnetopenauth,Asp.net Mvc 5,几天前,我将我的MVC4应用程序升级到MVC5,之后出现了以下错误。我使用Nuget(v4.3.3.13295)将DotNetOpenAuth更新为最新的位,但它仍然抛出此错误 我该如何解决这个问题 类型违反了继承安全规则: 'DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult'。衍生 类型必须与基类型的安全可访问性或 不易接近 终于解决了这个问题。事实证明,我需要对DotNetOpenAuth的源代码进行一些更改并重新编译。这一点都

几天前,我将我的MVC4应用程序升级到MVC5,之后出现了以下错误。我使用Nuget(v4.3.3.13295)将DotNetOpenAuth更新为最新的位,但它仍然抛出此错误

我该如何解决这个问题

类型违反了继承安全规则: 'DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult'。衍生 类型必须与基类型的安全可访问性或 不易接近


终于解决了这个问题。事实证明,我需要对DotNetOpenAuth的源代码进行一些更改并重新编译。这一点都不容易,因为从github下载后,源代码将无法编译。我花了大约3天的时间尝试各种东西,学习构建系统与DotNetOpenAuth的项目文件相结合,直到我最终将其编译。看来这个项目的作者已经放弃了它。请参阅有关此问题的更多信息

  • 使用以下命令行下载4.3代码库:git clone-bv4.3
  • 编辑/src/version.txt并将其更改为4.4.0。这使得此版本高于正式的Nuget版本,因此安装Nuget软件包不会试图从其存储库中安装旧版本的DotNetOpenAuth程序集
  • /src/目录下的所有AssemblyInfo.cs文件中删除以下字符串的所有实例

    [程序集:AllowPartiallyTrustedCallers]

  • 我不得不在两个项目中处理Microsoft.Contracts引用,并将其指向/tools/Contracts/publicsassemblies/v3.5/Microsoft.Contracts.dll,然后使用别名从该程序集中获取类以正确解析。有几行Requires.NotNull()拒绝编译,所以我只是把它们注释掉了……这就是生活

  • 运行以下命令跳过这些程序集的验证:
    sn.exe-Vr*,2780ccd10d57b246


  • 构建程序集后,我引用了这些程序集,从Nuget重新添加了Microsoft.AspNet.WebPages.OAuth 3.0,重新构建了我的解决方案,最后我的应用程序在MVC 5上启动并运行。

    非常感谢您的分享,使我避免了很多问题。我不得不使用sn.exe-Vr“*,2780ccd10d57b246”跳过强名称验证。不幸的是,我不得不运行这个。把它添加到我上面的答案中。强命名密钥文件使用密码加密,因此您无法重新编译并将输出传递为真正的交易。这是有道理的,但如果项目被放弃,那么作者最好取消密钥加密,这样就有人可以拿起火炬。