我想在mvc 5.2和.net 4.5.2
中填写Autofac在此页面中:https://www.nuget.org/packages/Autofac.Mvc5/在Discription中告诉:
依赖关系Autofac(> = 4.0.0&&< 5.0.0)Microsoft.AspNet.Mvc(> = 5.1.0&& < 6.0.0)
并更新到.NET 4.5.1,Autofac 4兼容性
在我的项目中我使用了mvc 5.2和dot net 4.5.2
如何在我的项目上实现Autofac?
快速入门MVC(此页:http://autofac.readthedocs.io/en/latest/integration/mvc.html#quick-start)告诉:
//注册您的MVC控制器
builder.RegisterControllers(typeof(MvcApplication).Assembly);
当我将typeof(MvcApplication).Assembly
放在 Global.asax.cs 文件和 Application_Start 方法上时
像这样:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
#region code for AutoFac DI Ioc
var builder = new ContainerBuilder();
//Register your mvc Controolers
builder.RegisterControllers(typeof(MvcApplication).Assembly);
//Set the dependecy resolver to be Autofac
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
#endregion
}
但是得到一个错误:
类型或命名空间名称' MvcApplication'找不到(你错过了使用指令还是汇编引用?)
无法解析符号MvcApplication *"
我认为剪辑代码适用于mvc 4文件而不是 mvc5中的Global.asax.cs
我该如何解决?
答案 0 :(得分:0)
也许这已经过时了,但是我遇到了同样的问题,我认为这可以对某人有所帮助。
正如Steven指出的那样,您可以使用MVC项目中的任何类型。如果您在Visual Studio中将新的MVC 5项目添加到解决方案中,则名称“ MVCApplication”来自生成的Global.asax文件。
但是,如果将新项目添加为标准的Web应用程序或Web api 2应用程序,则可能找不到此类(至少具有此名称),因此将无法使用它。
首先要做的是检查您的Global.asax.cs类,并找到从HttpApplication派生的类(准确的类名称)。就我而言,类名是WebApiApplication(我不确定,但是我想我是通过添加Web api控制器来启动项目的,这就是问题所在。)
因此,请尝试使用该名称:builder.RegisterControllers(typeof("whatevertheclassnameinglobal.asax.cs").Assembly);
首先在您的代码中查看结果。