如何在同一个 ASP.Net MVC 项目中使用 Unity MVC 和 Unity WebAPI
How to use Unity MVC & Unity WebAPI in the same ASP.Net MVC project
我正在尝试将 WebAPI 添加到现有 ASP.Net MVC 项目,我的问题是关于 Unity 的:
在单独使用 UnityMVC 之前,项目在 App_Start 文件夹中,class 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 class。
我执行项目时出现如下错误:
“类型 Unity.WebApi.UnityDependencyResolver 似乎没有实现 Microsoft.Practices.ServiceLocation.IServiceLocator。
参数名称:commonServiceLocator".
我找到了使用 Bootstrapper class 但未使用 UnityConfig class 或 UnityMvcActivator 的不同代码示例。
在Bootrstrapper class中,类型的注册是这样的:
container.RegisterType<IProductServices, ProductServices>().RegisterType<UnitOfWork>(new HierarchicalLifetimeManager());
我对这一切有点迷茫,请帮助我理解并修复这个错误。
您似乎使用了错误或过时的 NuGet 包。尝试改用 Unity 的官方包。因此删除任何与 Unity 相关的包并在包管理器控制台中添加以下包:
Install-Package Unity.Mvc
Install-Package Unity.AspNet.WebApi
现在您的项目中有了一个 Unity 容器,它可以很好地与 MVC 和 WebAPI 配合使用。
你也可以分开项目试试。
一个项目包含 MVC 代码,另一个项目包含 WebAPI 代码。这样,您将在 MVC 项目中安装 Unity.MVC,在 WebAPI 项目中安装 Unity.WebAPI。
之后,您可以毫无问题地使用 MVC 应用程序中的服务。
我正在尝试将 WebAPI 添加到现有 ASP.Net MVC 项目,我的问题是关于 Unity 的:
在单独使用 UnityMVC 之前,项目在 App_Start 文件夹中,class 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 class。
我执行项目时出现如下错误: “类型 Unity.WebApi.UnityDependencyResolver 似乎没有实现 Microsoft.Practices.ServiceLocation.IServiceLocator。 参数名称:commonServiceLocator".
我找到了使用 Bootstrapper class 但未使用 UnityConfig class 或 UnityMvcActivator 的不同代码示例。
在Bootrstrapper class中,类型的注册是这样的:
container.RegisterType<IProductServices, ProductServices>().RegisterType<UnitOfWork>(new HierarchicalLifetimeManager());
我对这一切有点迷茫,请帮助我理解并修复这个错误。
您似乎使用了错误或过时的 NuGet 包。尝试改用 Unity 的官方包。因此删除任何与 Unity 相关的包并在包管理器控制台中添加以下包:
Install-Package Unity.Mvc
Install-Package Unity.AspNet.WebApi
现在您的项目中有了一个 Unity 容器,它可以很好地与 MVC 和 WebAPI 配合使用。
你也可以分开项目试试。
一个项目包含 MVC 代码,另一个项目包含 WebAPI 代码。这样,您将在 MVC 项目中安装 Unity.MVC,在 WebAPI 项目中安装 Unity.WebAPI。
之后,您可以毫无问题地使用 MVC 应用程序中的服务。