使用Autofac.Mvc5(3.2.0)集成时出现TypeLoadException

时间:2014-01-28 14:32:02

标签: autofac asp.net-mvc-5.1

使用某些注册扩展方法时获取TypeLoadException。

builder.RegisterModelBinders(Assembly);
builder.RegisterModelBinderProvider();
builder.RegisterFilterProvider();

抛出以下各自的异常,但builder.RegisterControllers(Assembly)正常。

TypeLoadException: Inheritance security rules violated while overriding member: 'Autofac.Integration.Mvc.AutofacModelBinderProvider.GetBinder(System.Type)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.
    at Autofac.Integration.Mvc.RegistrationExtensions.RegisterModelBinders(ContainerBuilder builder, Assembly[] modelBinderAssemblies)

TypeLoadException: Inheritance security rules violated while overriding member: 'Autofac.Integration.Mvc.AutofacModelBinderProvider.GetBinder(System.Type)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.
    at Autofac.Integration.Mvc.RegistrationExtensions.RegisterModelBinderProvider(ContainerBuilder builder)

TypeLoadException: Inheritance security rules violated by type: 'Autofac.Integration.Mvc.AutofacFilterProvider'. Derived types must either match the security accessibility of the base type or be less accessible.
    at Autofac.Integration.Mvc.RegistrationExtensions.RegisterFilterProvider(ContainerBuilder builder)

以下是相关包package.config的样子:

<package id="Autofac" version="3.3.0" targetFramework="net45" />
<package id="Autofac.Mvc5" version="3.2.0" targetFramework="net45" />
<package id="Autofac.Wcf" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="5.1.0" targetFramework="net45" />

如果有任何安慰,之前的Autofac.Mvc5软件包会抛出同样的错误。

这些是Autofac的绑定重定向:

<dependentAssembly>
    <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>

2 个答案:

答案 0 :(得分:3)

我从MVC 4升级到MVC 5后出现此错误,它没有更新autofac mvc集成的nuget包,这是mvc 4上的stil,所以在所有autofac库的nuget下卸载/重新安装修复了这个错误对我来说。

答案 1 :(得分:0)

我重建了测试项目的.csproj,现在测试通过,我还没有找到确切的问题。如果我找到它,我会在这里发布。