Mvc 4 到 5 升级问题 - 如何解决违反 Autofac 安全规则的问题

Mvc 4 to 5 upgrade issue - how to resolve Autofac security rules violation

我根据此 link 将我的 asp.net 网络应用程序 (targetFramework 4.5.2) 从 mvc 4 升级到 5。该解决方案编译没有错误但是在运行时我得到:

覆盖成员 "Autofac.Integration.Mvc.AutofacDependencyResolver.GetService (System.Type)" 时违反了继承安全规则。覆盖方法的安全访问权限必须与覆盖方法的安全访问权限匹配。

我搜索了论坛,但 none 的相关帖子可以帮助我确定错误的来源。 尝试将 Autofac.Mcv4 升级到 5(如帖子中所建议的)失败(-> Autofac.Mcv5 不针对 frameWork 4.5.2)。将 targetFramework 更改为 4.6 和 4.6.1 也不允许安装 Autofac.Mcv5。

下面我列出了主工程中安装的相关包:

<packages>
  <package id="Autofac" version="3.5.0" targetFramework="net452" />
  <package id="Autofac.Mvc4" version="3.1.0" targetFramework="net452" />
  <package id="Autofac.WebApi2" version="3.4.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.Providers.Core" version="1.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.Providers.LocalDB" version="1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net452" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.OData" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.0" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net452" />
  <package id="Microsoft.jQuery.Unobtrusive.Ajax" version="2.0.30116.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.30116.0" targetFramework="net45" />
  <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net452" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Modernizr" version="2.6.2" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
  ... and others
</packages>

另请注意,该解决方案有多个项目(其中两个引用了 Autofac)。 任何帮助确定错误的来源或解决错误的帮助将不胜感激。

您忘记更新 Autofac.Mvc4 包 to Autofac.Mvc5

正如之前发布的要让 Autofac 与 mvc5 一起工作的帖子一样,还需要 Autofac.mvc5。但是在我的例子中,Autofac.mvc5 拒绝安装,因为我的 TargetFramwork 是 4.5.2。当我升级到 4.6.1 时,Autofac.mvc5 仍然无法安装。

原因很简单:在我的解决方案中有几个项目,其中一个我忘记升级 targetFramwork。现在 Autofac.mvc5 安装正确,继承安全规则违规错误 消失,解决方案运行正常。