WebApi.UnityDependencyResolver不实现Microsoft.Practices.ServiceLocation.IServiceLocator.参数:commonServiceLocator [英] WebApi.UnityDependencyResolver does not implement Microsoft.Practices.ServiceLocation.IServiceLocator. Parameter : commonServiceLocator
问题描述
我尝试运行以下代码:
using System.Web.Http;
using System.Web.Mvc;
using Conduit.Mam.ClientSerivces.Dal.Configuration;
using MamInfrastructure.Common.Dal;
using MamInfrastructure.Common.Logger;
using MamInfrastructure.Logger;
using Microsoft.Practices.Unity;
using Unity.WebApi;
namespace Conduit.Mam.ClientServices.Common.Initizliaer
{
public static class Initializer
{
private static bool isInitialize;
private static readonly object LockObj = new object();
private static IUnityContainer defaultContainer = new UnityContainer();
static Initializer()
{
Initialize();
}
public static void Initialize()
{
if (isInitialize)
return;
lock (LockObj)
{
IUnityContainer container = defaultContainer;
//registering Unity for web API
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
//registering Unity for MVC
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
container.RegisterType<IDal<ClientService.DAL.EntityFramework.MamConfiguration>, MamConfigurationDal>();
container.RegisterType<IApplicationLogger, Log4NetLogger>();
if (!isInitialize)
{
isInitialize = true;
}
}
}
}
}
ad收到以下异常:
The type Unity.WebApi.UnityDependencyResolver does not appear to implement Microsoft.Practices.ServiceLocation.IServiceLocator.
Parameter name: commonServiceLocator
The type Unity.WebApi.UnityDependencyResolver does not appear to implement Microsoft.Practices.ServiceLocation.IServiceLocator.
Parameter name: commonServiceLocator
我尝试安装webApi软件包,但没有帮助
I have tried to install webApi package but it didn't help
推荐答案
在您的Initialize
方法中,替换:
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
具有:
GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
现在您了解问题所在了:
Now you understand what the problem is:
System.Web.Http.Dependencies.IDependencyResolver
(由Web API使用)和
System.Web.Http.Dependencies.IDependencyResolver
(used by the Web API) and System.web.Mvc.IDependencyResolver
(used by ASP.NET MVC) are two completely different types (even if they have the same name) and yet you attempt to assign both of them to the same type (UnityDependencyResolver
) which obviously cannot work.
这篇关于WebApi.UnityDependencyResolver不实现Microsoft.Practices.ServiceLocation.IServiceLocator.参数:commonServiceLocator的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!