AutoFac:在mvc 5.2上找不到MvcApplication

时间:2016-10-02 12:31:49

标签: c# autofac asp.net-mvc-5.2 .net-4.5.2

我想在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

我该如何解决?

1 个答案:

答案 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); 首先在您的代码中查看结果。