我在ASP.MVC 4上配置Autofac時遇到了一些奇怪的錯誤。我在許多其他項目上成功使用過Autofac。這MVC項目是淨4.5.2,我引用來自的NuGet以下Autofac庫:ASP.net MVC 4和Autofac錯誤 - 覆蓋成員時違反了繼承安全規則
Autofac版本3.5.2 =
Autofac.Mvc4版本= 3.1.0
的錯誤我得到的是:
「重寫成員時違反了繼承安全規則:'Autofac.Integration.Mvc.AutofacDependencyResolver.GetService(System.Type)'。覆蓋方法的安全性可訪問性必須匹配方法的安全性可訪問性重寫「。
奇怪的是,我的代碼甚至沒有被稱爲這個錯誤被解僱!我的代碼如下:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
try
{
AutofacDependencyResolverHelper.RegisterAutofac();
}
catch (Exception ex)
{
Trace.Write(ex.Message);
throw;
}
}
public class AutofacDependencyResolverHelper
{
public static void RegisterAutofac()
{
var container = GetContainer();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
public static IContainer GetContainer()
{
var assemblies = new List<Assembly>();
assemblies.Add(Assembly.Load("Core.Infrastructure"));
assemblies.Add(Assembly.Load("Core.GenericRepository"));
assemblies.Add(Assembly.Load("Core.Common"));
assemblies.Add(Assembly.Load("CRM.Interfaces"));
assemblies.Add(Assembly.Load("CRM.Data"));
assemblies.Add(Assembly.Load("CRM.Dtos"));
assemblies.Add(Assembly.Load("CRM.Entities"));
assemblies.Add(Assembly.Load("CRM.Business"));
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(assemblies.ToArray()).AsImplementedInterfaces();
builder.RegisterControllers(Assembly.Load("CRM.Web.Mvc4"));
var container = builder.Build();
return container;
}
}
不知道這個錯誤是什麼?任何意見將不勝感激。我已經發現了一些其他的問題,但它們與MVC5:
Solving Autofac issue Inheritance security rules violated while overriding member GetService
全配置更新時間:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="angularjs.TypeScript.DefinitelyTyped" version="4.2.7" targetFramework="net46" />
<package id="Antlr" version="3.4.1.9004" targetFramework="net46" />
<package id="Autofac" version="3.5.2" targetFramework="net46" />
<package id="Autofac.Mvc4" version="3.1.0" targetFramework="net46" />
<package id="bootstrap" version="3.0.0" targetFramework="net46" />
<package id="jQuery" version="1.10.2" targetFramework="net46" />
<package id="jquery.TypeScript.DefinitelyTyped" version="0.0.1" targetFramework="net46" />
<package id="jQuery.Validation" version="1.11.1" targetFramework="net46" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
<package id="Modernizr" version="2.6.2" targetFramework="net46" />
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net46" />
<package id="Respond" version="1.2.0" targetFramework="net46" />
<package id="WebGrease" version="1.5.2" targetFramework="net46" />
</packages>
你可以顯示整個packages.config嗎? –
嗨,更新上面的帖子與完整.config的詳細信息 – user1829319