我试图将WebAPI添加到现有的ASP.Net MVC项目中,我的问题是关于Unity:
在单独使用UnityMVC之前,项目在App_Start文件夹中有UnityConfig类,代码如下:
container.RegisterType<IUnitOfWork, UnitOfWork>(new PerRequestLifetimeManager());
container.RegisterType<IDataContext, tfe_schemaContext>(new PerRequestLifetimeManager());
container.RegisterType<IPrintJobService, PrintJobService>(new PerRequestLifetimeManager());
container.RegisterType<IRepository<print_job>, Repository<print_job>>(new PerRequestLifetimeManager());
要使用WebAPI,我通过NuGet添加了UnityWebAPI,此操作在App_Start文件夹中添加了UnityMvcActivator类。
执行项目时显示以下错误: &#34;类型Unity.WebApi.UnityDependencyResolver似乎没有实现Microsoft.Practices.ServiceLocation.IServiceLocator。 参数名称:commonServiceLocator&#34;。
我使用Bootstrapper类找到了不同的代码示例,但没有使用UnityConfig类或UnityMvcActivator。
在Bootrstrapper类中,类型的注册如下:
container.RegisterType<IProductServices, ProductServices>().RegisterType<UnitOfWork>(new HierarchicalLifetimeManager());
我对这一切有点失落,请帮助我理解并解决此错误。
答案 0 :(得分:6)
您似乎使用了错误或过时的NuGet包。请尝试使用Unity的官方软件包。因此,删除与Unity相关的所有软件包,并在软件包管理器控制台中添加以下软件包:
Install-Package Unity.Mvc
Install-Package Unity.AspNet.WebApi
现在,您的项目中有一个Unity容器,可以很好地与MVC和WebAPI配合使用。
答案 1 :(得分:0)
您也可以尝试分离项目。
一个项目四个MVC代码和另一个WebAPI代码项目。这样,您将在MVC项目中安装Unity.MVC,在WebAPI项目中安装Unity.WebAPI。
之后,您可以毫无问题地使用MVC应用程序中的服务。